Filters: "*" ~[!nonportable] ~[!benchmark] ~[approvals]
Randomness seeded to: 1

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<exe-name> is a Catch2 v<version> host application.
Run with -? for options

-------------------------------------------------------------------------------
# A test name that starts with a #
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  yay

-------------------------------------------------------------------------------
#1027: Bitfields can be captured
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( y.v == 0 )
with expansion:
  0 == 0

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == y.v )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
#1147
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 == t2 )
with expansion:
  {?} == {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 != t2 )
with expansion:
  {?} != {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 < t2 )
with expansion:
  {?} < {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 > t2 )
with expansion:
  {?} > {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 <= t2 )
with expansion:
  {?} <= {?}

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( t1 >= t2 )
with expansion:
  {?} >= {?}

-------------------------------------------------------------------------------
#1175 - Hidden Test
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#1238
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( std::memcmp(uarr, "123", sizeof(uarr)) == 0 )
with expansion:
  0 == 0
with messages:
  uarr := "123"
  sarr := "456"

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( std::memcmp(sarr, "456", sizeof(sarr)) == 0 )
with expansion:
  0 == 0
with messages:
  uarr := "123"
  sarr := "456"

-------------------------------------------------------------------------------
#1245
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#1319: Sections can have description (even if it is not saved
  SectionName
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#1403
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( h1 == h2 )
with expansion:
  [1403 helper] == [1403 helper]

-------------------------------------------------------------------------------
#1455 - INFO and WARN can start with a linebreak
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: warning:

This info message starts with a linebreak

This warning message starts with a linebreak


No assertions in test case '#1455 - INFO and WARN can start with a linebreak'

This would not be caught previously
Nor would this
-------------------------------------------------------------------------------
#1514: stderr/stdout is not captured in tests aborted by an exception
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: FAILED:
explicitly with message:
  1514

-------------------------------------------------------------------------------
#1548
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( std::is_same<TypeList<int>, TypeList<int>>::value )
with expansion:
  true

-------------------------------------------------------------------------------
#1905 -- test spec parser properly clears internal state between compound tests
-------------------------------------------------------------------------------
TestSpec.tests.cpp:<line number>
...............................................................................

TestSpec.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches(*fakeTestCase("spec . char")) )
with expansion:
  true

TestSpec.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches(*fakeTestCase("spec , char")) )
with expansion:
  true

TestSpec.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( spec.matches(*fakeTestCase(R"(spec \, char)")) )
with expansion:
  !false

-------------------------------------------------------------------------------
#1912 -- test spec parser handles escaping
  Various parentheses
-------------------------------------------------------------------------------
TestSpec.tests.cpp:<line number>
...............................................................................

TestSpec.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches(*fakeTestCase(R"(spec {a} char)")) )
with expansion:
  true

TestSpec.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches(*fakeTestCase(R"(spec [a] char)")) )
with expansion:
  true

TestSpec.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( spec.matches(*fakeTestCase("differs but has similar tag", "[a]")) )
with expansion:
  !false

-------------------------------------------------------------------------------
#1912 -- test spec parser handles escaping
  backslash in test name
-------------------------------------------------------------------------------
TestSpec.tests.cpp:<line number>
...............................................................................

TestSpec.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches(*fakeTestCase(R"(spec \ char)")) )
with expansion:
  true

-------------------------------------------------------------------------------
#1913 - GENERATE inside a for loop should not keep recreating the generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( counter < 7 )
with expansion:
  3 < 7

-------------------------------------------------------------------------------
#1913 - GENERATE inside a for loop should not keep recreating the generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( counter < 7 )
with expansion:
  6 < 7

-------------------------------------------------------------------------------
#1913 - GENERATEs can share a line
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i != j )
with expansion:
  1 != 3

-------------------------------------------------------------------------------
#1913 - GENERATEs can share a line
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i != j )
with expansion:
  1 != 4

-------------------------------------------------------------------------------
#1913 - GENERATEs can share a line
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i != j )
with expansion:
  2 != 3

-------------------------------------------------------------------------------
#1913 - GENERATEs can share a line
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i != j )
with expansion:
  2 != 4

-------------------------------------------------------------------------------
#1938 - GENERATE after a section
  A
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with message:
  A

-------------------------------------------------------------------------------
#1938 - GENERATE after a section
  B
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  1

-------------------------------------------------------------------------------
#1938 - GENERATE after a section
  B
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  2

-------------------------------------------------------------------------------
#1938 - GENERATE after a section
  B
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  3

-------------------------------------------------------------------------------
#1938 - Section followed by flat generate
  A
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( 1 )

-------------------------------------------------------------------------------
#1938 - Section followed by flat generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  2

-------------------------------------------------------------------------------
#1938 - Section followed by flat generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  3

-------------------------------------------------------------------------------
#1938 - flat generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  1

-------------------------------------------------------------------------------
#1938 - flat generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  2

-------------------------------------------------------------------------------
#1938 - flat generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  3

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
  A
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with message:
  A

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 1
  j := 3
  k := 5

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
  B
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with message:
  B

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 1
  j := 3
  k := 6

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
  B
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with message:
  B

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 1
  j := 4
  k := 5

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 1
  j := 4
  k := 6

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
  A
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with message:
  A

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 2
  j := 3
  k := 5

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
  B
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with message:
  B

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 2
  j := 3
  k := 6

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
  B
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with message:
  B

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 2
  j := 4
  k := 5

-------------------------------------------------------------------------------
#1938 - mixed sections and generates
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
with messages:
  i := 2
  j := 4
  k := 6

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  1

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  1

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  1

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  2

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  1

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  3

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  2

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  1

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  2

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  2

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  2

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  3

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  3

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  1

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  3

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  2

-------------------------------------------------------------------------------
#1938 - nested generate
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( m )
with expansion:
  3

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( n )
with expansion:
  3

-------------------------------------------------------------------------------
#1954 - 7 arg template test case sig compiles - 1, 1, 1, 1, 1, 0, 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#1954 - 7 arg template test case sig compiles - 5, 1, 1, 1, 1, 0, 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#1954 - 7 arg template test case sig compiles - 5, 3, 1, 1, 1, 0, 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
#2152 - ULP checks between differently signed values were wrong - double
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
with expansion:
  0.0 is within 2 ULPs of -4.9406564584124654e-324 ([-1.4821969375237396e-323,
  4.9406564584124654e-324])

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
with expansion:
  0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-
  324, -0.0000000000000000e+00])

-------------------------------------------------------------------------------
#2152 - ULP checks between differently signed values were wrong - float
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) )
with expansion:
  0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) )
with expansion:
  0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.
  00000000e+00])

-------------------------------------------------------------------------------
#2615 - Throwing in constructor generator fails test case but does not abort
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  failure to init

-------------------------------------------------------------------------------
#748 - captures with unexpected exceptions
  outside assertions
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with messages:
  answer := 42
  expected exception

-------------------------------------------------------------------------------
#748 - captures with unexpected exceptions
  inside REQUIRE_NOTHROW
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_NOTHROW( thisThrows() )
due to unexpected exception with messages:
  answer := 42
  expected exception

-------------------------------------------------------------------------------
#748 - captures with unexpected exceptions
  inside REQUIRE_THROWS
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( thisThrows() )
with message:
  answer := 42

-------------------------------------------------------------------------------
#809
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( 42 == f )
with expansion:
  42 == {?}

-------------------------------------------------------------------------------
#833
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( a == t )
with expansion:
  3 == 3

Compilation.tests.cpp:<line number>: PASSED:
  CHECK( a == t )
with expansion:
  3 == 3

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( throws_int(true) )

Compilation.tests.cpp:<line number>: PASSED:
  CHECK_THROWS_AS( throws_int(true), int )

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( throws_int(false) )

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "aaa", Catch::Matchers::EndsWith("aaa") )
with expansion:
  "aaa" ends with: "aaa"

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( templated_tests<int>(3) )
with expansion:
  true

-------------------------------------------------------------------------------
#835 -- errno should not be touched by Catch2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( f() == 0 )
with expansion:
  1 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( errno_after == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
#872
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( x == 4 )
with expansion:
  {?} == 4
with message:
  dummy := 0

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 3
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
#961 -- Dynamically created sections should all be reported
  Looped section 4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  Everything is OK

-------------------------------------------------------------------------------
'Not' checks that should fail
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:
  CHECK( false != false )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( true != true )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( !true )
with expansion:
  false

Condition.tests.cpp:<line number>: FAILED:
  CHECK_FALSE( true )
with expansion:
  !true

Condition.tests.cpp:<line number>: FAILED:
  CHECK( !trueValue )
with expansion:
  false

Condition.tests.cpp:<line number>: FAILED:
  CHECK_FALSE( trueValue )
with expansion:
  !true

Condition.tests.cpp:<line number>: FAILED:
  CHECK( !(1 == 1) )
with expansion:
  false

Condition.tests.cpp:<line number>: FAILED:
  CHECK_FALSE( 1 == 1 )

-------------------------------------------------------------------------------
'Not' checks that should succeed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( false == false )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( true == true )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( !false )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( false )
with expansion:
  !false

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( !falseValue )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( falseValue )
with expansion:
  !false

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( !(1 == 2) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( 1 == 2 )

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  compare to true
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( is_true<true>::value == true )
with expansion:
  true == true

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true == is_true<true>::value )
with expansion:
  true == true

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  compare to false
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( is_true<false>::value == false )
with expansion:
  false == false

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( false == is_true<false>::value )
with expansion:
  false == false

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  negation
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( !is_true<false>::value )
with expansion:
  true

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  double negation
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( !!is_true<true>::value )
with expansion:
  true

-------------------------------------------------------------------------------
(unimplemented) static bools can be evaluated
  direct
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( is_true<true>::value )
with expansion:
  true

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( is_true<false>::value )
with expansion:
  !false

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  1 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  1 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  2 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  2 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 4

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  4 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 5

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  5 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 9

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 7

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 7

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 8

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 8

-------------------------------------------------------------------------------
3x3x3 ints
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  CHECK( x < y )
with expansion:
  3 < 6

Generators.tests.cpp:<line number>: PASSED:
  CHECK( y < z )
with expansion:
  6 < 9

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( x < z )
with expansion:
  3 < 9

-------------------------------------------------------------------------------
A METHOD_AS_TEST_CASE based test run that fails
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( s == "world" )
with expansion:
  "hello" == "world"

-------------------------------------------------------------------------------
A METHOD_AS_TEST_CASE based test run that succeeds
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( s == "hello" )
with expansion:
  "hello" == "hello"

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - Template_Foo
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that fails - std::vector
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
with expansion:
  0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - Template_Foo
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector
<float>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD based test run that succeeds - std::vector
<int>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails -
Template_Foo_2<float, 6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  6 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails -
Template_Foo_2<int, 2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  2 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array
<float, 6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  6 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that fails - std::array
<int, 2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
with expansion:
  2 < 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds -
Template_Foo_2<float,6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  6 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds -
Template_Foo_2<int,2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  2 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::
array<float,6>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  6 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG based test run that succeeds - std::
array<int,2>
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() >= 2 )
with expansion:
  2 >= 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that fails - double
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture<TestType>::m_a == 2 )
with expansion:
  1.0 == 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that fails - float
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture<TestType>::m_a == 2 )
with expansion:
  1.0f == 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that fails - int
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Template_Fixture<TestType>::m_a == 2 )
with expansion:
  1 == 2

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - double
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1.0 == 1

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - float
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1.0f == 1

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD based test run that succeeds - int
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 1
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Nttp_Fixture<V>::value == 0 )
with expansion:
  1 == 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 3
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Nttp_Fixture<V>::value == 0 )
with expansion:
  3 == 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that fails - 6
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( Nttp_Fixture<V>::value == 0 )
with expansion:
  6 == 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 1
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Nttp_Fixture<V>::value > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 3
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Nttp_Fixture<V>::value > 0 )
with expansion:
  3 > 0

-------------------------------------------------------------------------------
A TEMPLATE_TEST_CASE_METHOD_SIG based test run that succeeds - 6
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Nttp_Fixture<V>::value > 0 )
with expansion:
  6 > 0

-------------------------------------------------------------------------------
A TEST_CASE_METHOD based test run that fails
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: FAILED:
  REQUIRE( m_a == 2 )
with expansion:
  1 == 2

-------------------------------------------------------------------------------
A TEST_CASE_METHOD based test run that succeeds
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( m_a == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
A Template product test case - Foo<float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case - Foo<int>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case - std::vector<float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case - std::vector<int>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
A Template product test case with array signature - Bar<float, 42>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  42 > 0

-------------------------------------------------------------------------------
A Template product test case with array signature - Bar<int, 9>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  9 > 0

-------------------------------------------------------------------------------
A Template product test case with array signature - std::array<float, 42>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  42 > 0

-------------------------------------------------------------------------------
A Template product test case with array signature - std::array<int, 9>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( x.size() > 0 )
with expansion:
  9 > 0

-------------------------------------------------------------------------------
A comparison that uses literals instead of the normal constructor
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1.23_a )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != 1.22_a )
with expansion:
  1.23 != Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( -d == -1.23_a )
with expansion:
  -1.23 == Approx( -1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1.2_a .epsilon(.1) )
with expansion:
  1.23 == Approx( 1.2 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != 1.2_a .epsilon(.001) )
with expansion:
  1.23 != Approx( 1.2 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1_a .epsilon(.3) )
with expansion:
  1.23 == Approx( 1.0 )

-------------------------------------------------------------------------------
A couple of nested sections followed by a failure
  Outer
  Inner
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  that's not flying - that's failing in style

-------------------------------------------------------------------------------
A couple of nested sections followed by a failure
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
explicitly with message:
  to infinity and beyond

-------------------------------------------------------------------------------
A failing expression with a non streamable type is still captured
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: FAILED:
  CHECK( &o1 == &o2 )
with expansion:
  0x<hex digits> == 0x<hex digits>

Tricky.tests.cpp:<line number>: FAILED:
  CHECK( o1 == o2 )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
Absolute margin
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 != Approx(100.0) )
with expansion:
  104.0 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 == Approx(100.0).margin(5) )
with expansion:
  104.0 == Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 == Approx(100.0).margin(4) )
with expansion:
  104.0 == Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 104.0 != Approx(100.0).margin(3) )
with expansion:
  104.0 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 100.3 != Approx(100.0) )
with expansion:
  100.3 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 100.3 == Approx(100.0).margin(0.5) )
with expansion:
  100.3 == Approx( 100.0 )

-------------------------------------------------------------------------------
An empty test with no assertions
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'An empty test with no assertions'

-------------------------------------------------------------------------------
An expression with side-effects should only be evaluated once
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( i++ == 7 )
with expansion:
  7 == 7

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( i++ == 8 )
with expansion:
  8 == 8

-------------------------------------------------------------------------------
An unchecked exception reports the line of the last assertion
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  CHECK( 1 == 1 )

Exception.tests.cpp:<line number>: FAILED:
  {Unknown expression after the reported line}
due to unexpected exception with message:
  unexpected exception

-------------------------------------------------------------------------------
Anonymous test case 1
-------------------------------------------------------------------------------
VariadicMacros.tests.cpp:<line number>
...............................................................................

VariadicMacros.tests.cpp:<line number>: PASSED:
with message:
  anonymous test case

-------------------------------------------------------------------------------
Approx setters validate their arguments
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).margin(0) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).margin(1234656) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( Approx(0).margin(-2), std::domain_error )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).epsilon(0) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Approx(0).epsilon(1) )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( Approx(0).epsilon(-0.001), std::domain_error )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( Approx(0).epsilon(1.0001), std::domain_error )

-------------------------------------------------------------------------------
Approx with exactly-representable margin
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 0.25f == Approx(0.0f).margin(0.25f) )
with expansion:
  0.25f == Approx( 0.0 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 0.0f == Approx(0.25f).margin(0.25f) )
with expansion:
  0.0f == Approx( 0.25 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 0.5f == Approx(0.25f).margin(0.25f) )
with expansion:
  0.5f == Approx( 0.25 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 245.0f == Approx(245.25f).margin(0.25f) )
with expansion:
  245.0f == Approx( 245.25 )

Approx.tests.cpp:<line number>: PASSED:
  CHECK( 245.5f == Approx(245.25f).margin(0.25f) )
with expansion:
  245.5f == Approx( 245.25 )

-------------------------------------------------------------------------------
Approximate PI
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( divide( 22, 7 ) == Approx( 3.141 ).epsilon( 0.001 ) )
with expansion:
  3.1428571429 == Approx( 3.141 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( divide( 22, 7 ) != Approx( 3.141 ).epsilon( 0.0001 ) )
with expansion:
  3.1428571429 != Approx( 3.141 )

-------------------------------------------------------------------------------
Approximate comparisons with different epsilons
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != Approx( 1.231 ) )
with expansion:
  1.23 != Approx( 1.231 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == Approx( 1.231 ).epsilon( 0.1 ) )
with expansion:
  1.23 == Approx( 1.231 )

-------------------------------------------------------------------------------
Approximate comparisons with floats
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 1.23f == Approx( 1.23f ) )
with expansion:
  1.23f == Approx( 1.2300000191 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 0.0f == Approx( 0.0f ) )
with expansion:
  0.0f == Approx( 0.0 )

-------------------------------------------------------------------------------
Approximate comparisons with ints
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 1 == Approx( 1 ) )
with expansion:
  1 == Approx( 1.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == Approx( 0 ) )
with expansion:
  0 == Approx( 0.0 )

-------------------------------------------------------------------------------
Approximate comparisons with mixed numeric types
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 1.0f == Approx( 1 ) )
with expansion:
  1.0f == Approx( 1.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == Approx( dZero) )
with expansion:
  0 == Approx( 0.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 == Approx( dSmall ).margin( 0.001 ) )
with expansion:
  0 == Approx( 0.00001 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 1.234f == Approx( dMedium ) )
with expansion:
  1.234f == Approx( 1.234 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( dMedium == Approx( 1.234f ) )
with expansion:
  1.234 == Approx( 1.2339999676 )

-------------------------------------------------------------------------------
Arbitrary predicate matcher
  Function pointer
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, Predicate<int>( alwaysTrue, "always true" ) )
with expansion:
  1 matches predicate: "always true"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, !Predicate<int>( alwaysFalse, "always false" ) )
with expansion:
  1 not matches predicate: "always false"

-------------------------------------------------------------------------------
Arbitrary predicate matcher
  Lambdas + different type
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "Hello olleH", Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); }, "First and last character should be equal" ) )
with expansion:
  "Hello olleH" matches predicate: "First and last character should be equal"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "This wouldn't pass", !Predicate<std::string>( []( std::string const& str ) -> bool { return str.front() == str.back(); } ) )
with expansion:
  "This wouldn't pass" not matches undescribed predicate

-------------------------------------------------------------------------------
Assertion macros support bit operators and bool conversions
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( lhs | rhs )
with expansion:
  Val: 1 | Val: 2

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( lhs & rhs )
with expansion:
  !(Val: 1 & Val: 2)

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( HasBitOperators{ 1 } & HasBitOperators{ 1 } )
with expansion:
  Val: 1 & Val: 1

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( lhs ^ rhs )
with expansion:
  Val: 1 ^ Val: 2

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( lhs ^ lhs )
with expansion:
  !(Val: 1 ^ Val: 1)

-------------------------------------------------------------------------------
Assertions then sections
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
  Another section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Assertions then sections
  A section
  Another other section
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

-------------------------------------------------------------------------------
Basic use of the Contains range matcher
  Different argument ranges, same element type, default comparison
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( a, Contains(1) )
with expansion:
  { 1, 2, 3 } contains element 1

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( b, Contains(1) )
with expansion:
  { 0, 1, 2 } contains element 1

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( c, !Contains(1) )
with expansion:
  { 4, 5, 6 } not contains element 1

-------------------------------------------------------------------------------
Basic use of the Contains range matcher
  Different argument ranges, same element type, custom comparison
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( a, Contains(0, close_enough) )
with expansion:
  { 1, 2, 3 } contains element 0

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( b, Contains(0, close_enough) )
with expansion:
  { 0, 1, 2 } contains element 0

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( c, !Contains(0, close_enough) )
with expansion:
  { 4, 5, 6 } not contains element 0

-------------------------------------------------------------------------------
Basic use of the Contains range matcher
  Different element type, custom comparisons
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( a, Contains(4, [](auto&& lhs, size_t sz) { return lhs.size() == sz; }) )
with expansion:
  { "abc", "abcd", "abcde" } contains element 4

-------------------------------------------------------------------------------
Basic use of the Contains range matcher
  Can handle type that requires ADL-found free function begin and end
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( in, Contains(1) )
with expansion:
  { 1, 2, 3, 4, 5 } contains element 1

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( in, !Contains(8) )
with expansion:
  { 1, 2, 3, 4, 5 } not contains element 8

-------------------------------------------------------------------------------
Basic use of the Contains range matcher
  Initialization with move only types
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( in, Contains(MoveOnlyTestElement{ 2 }) )
with expansion:
  { 1, 2, 3 } contains element 2

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( in, !Contains(MoveOnlyTestElement{ 9 }) )
with expansion:
  { 1, 2, 3 } not contains element 9

-------------------------------------------------------------------------------
Basic use of the Contains range matcher
  Matching using matcher
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( in, Contains(Catch::Matchers::WithinAbs(0.5, 0.5)) )
with expansion:
  { 1.0, 2.0, 3.0, 0.0 } contains element matching is within 0.5 of 0.5

-------------------------------------------------------------------------------
Basic use of the Empty range matcher
  Simple, std-provided containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( empty_array, IsEmpty() )
with expansion:
  {  } is empty

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( non_empty_array, !IsEmpty() )
with expansion:
  { 0.0 } not is empty

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( empty_vec, IsEmpty() )
with expansion:
  {  } is empty

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( non_empty_vec, !IsEmpty() )
with expansion:
  { 'a', 'b', 'c' } not is empty

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( inner_lists_are_empty, !IsEmpty() )
with expansion:
  { {  } } not is empty

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( inner_lists_are_empty.front(), IsEmpty() )
with expansion:
  {  } is empty

-------------------------------------------------------------------------------
Basic use of the Empty range matcher
  Type with empty
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( has_empty{}, !IsEmpty() )
with expansion:
  {?} not is empty

-------------------------------------------------------------------------------
Basic use of the Empty range matcher
  Type requires ADL found empty free function
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( unrelated::ADL_empty{}, IsEmpty() )
with expansion:
  {?} is empty

-------------------------------------------------------------------------------
CAPTURE can deal with complex expressions
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with messages:
  a := 1
  b := 2
  c := 3
  a + b := 3
  a+b := 3
  c > b := true
  a == 1 := true

-------------------------------------------------------------------------------
CAPTURE can deal with complex expressions involving commas
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with messages:
  custom_index_op<int>{1, 2, 3}[0, 1, 2] := 0
  custom_index_op<int>{1, 2, 3}[(0, 1)] := 0
  custom_index_op<int>{1, 2, 3}[0] := 0
  (helper_1436<int, int>{12, -12}) := { 12, -12 }
  (helper_1436<int, int>(-12, 12)) := { -12, 12 }
  (1, 2) := 2
  (2, 3) := 3

-------------------------------------------------------------------------------
CAPTURE parses string and character constants
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with messages:
  ("comma, in string", "escaped, \", ") := "escaped, ", "
  "single quote in string,'," := "single quote in string,',"
  "some escapes, \\,\\\\" := "some escapes, \,\\"
  "some, ), unmatched, } prenheses {[<" := "some, ), unmatched, } prenheses {[
  <"
  '"' := '"'
  '\'' := '''
  ',' := ','
  '}' := '}'
  ')' := ')'
  '(' := '('
  '{' := '{'

-------------------------------------------------------------------------------
Capture and info messages
  Capture should stringify like assertions
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  i := 2

-------------------------------------------------------------------------------
Capture and info messages
  Info should NOT stringify the way assertions do
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  3

-------------------------------------------------------------------------------
CaseInsensitiveEqualsTo is case insensitive
  Degenerate cases
-------------------------------------------------------------------------------
Details.tests.cpp:<line number>
...............................................................................

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( eq( "", "" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( eq( "", "a" ) )
with expansion:
  !false

-------------------------------------------------------------------------------
CaseInsensitiveEqualsTo is case insensitive
  Plain comparisons
-------------------------------------------------------------------------------
Details.tests.cpp:<line number>
...............................................................................

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( eq( "a", "a" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( eq( "a", "A" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( eq( "A", "a" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( eq( "A", "A" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( eq( "a", "b" ) )
with expansion:
  !false

Details.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( eq( "a", "B" ) )
with expansion:
  !false

-------------------------------------------------------------------------------
CaseInsensitiveLess is case insensitive
  Degenerate cases
-------------------------------------------------------------------------------
Details.tests.cpp:<line number>
...............................................................................

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( lt( "", "a" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( lt( "a", "a" ) )
with expansion:
  !false

Details.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( lt( "", "" ) )
with expansion:
  !false

-------------------------------------------------------------------------------
CaseInsensitiveLess is case insensitive
  Plain comparisons
-------------------------------------------------------------------------------
Details.tests.cpp:<line number>
...............................................................................

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( lt( "a", "b" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( lt( "a", "B" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( lt( "A", "b" ) )
with expansion:
  true

Details.tests.cpp:<line number>: PASSED:
  REQUIRE( lt( "A", "B" ) )
with expansion:
  true

-------------------------------------------------------------------------------
Character pretty printing
  Specifically escaped
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( tab == '\t' )
with expansion:
  '\t' == '\t'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( newline == '\n' )
with expansion:
  '\n' == '\n'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( carr_return == '\r' )
with expansion:
  '\r' == '\r'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( form_feed == '\f' )
with expansion:
  '\f' == '\f'

-------------------------------------------------------------------------------
Character pretty printing
  General chars
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( space == ' ' )
with expansion:
  ' ' == ' '

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'a' == 'a'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'z' == 'z'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'A' == 'A'

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == chars[i] )
with expansion:
  'Z' == 'Z'

-------------------------------------------------------------------------------
Character pretty printing
  Low ASCII
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( null_terminator == '\0' )
with expansion:
  0 == 0

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  2 == 2

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  3 == 3

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  4 == 4

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( c == i )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
Clara::Arg supports single-arg parse the way Opt does
-------------------------------------------------------------------------------
Clara.tests.cpp:<line number>
...............................................................................

Clara.tests.cpp:<line number>: PASSED:
  CHECK( name.empty() )
with expansion:
  true

Clara.tests.cpp:<line number>: PASSED:
  REQUIRE( name == "foo" )
with expansion:
  "foo" == "foo"

-------------------------------------------------------------------------------
Clara::Opt supports accept-many lambdas
  Parsing fails on multiple options without accept_many
-------------------------------------------------------------------------------
Clara.tests.cpp:<line number>
...............................................................................

Clara.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( parse_result )
with expansion:
  !{?}

-------------------------------------------------------------------------------
Clara::Opt supports accept-many lambdas
  Parsing succeeds on multiple options with accept_many
-------------------------------------------------------------------------------
Clara.tests.cpp:<line number>
...............................................................................

Clara.tests.cpp:<line number>: PASSED:
  CHECK( parse_result )
with expansion:
  {?}

Clara.tests.cpp:<line number>: PASSED:
  CHECK( res == std::vector<std::string>{ "aaa", "bbb" } )
with expansion:
  { "aaa", "bbb" } == { "aaa", "bbb" }

-------------------------------------------------------------------------------
ColourGuard behaviour
  ColourGuard is disengaged by default
-------------------------------------------------------------------------------
ColourImpl.tests.cpp:<line number>
...............................................................................

ColourImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( streamWrapper.str().empty() )
with expansion:
  true

-------------------------------------------------------------------------------
ColourGuard behaviour
  ColourGuard is engaged by op<<
-------------------------------------------------------------------------------
ColourImpl.tests.cpp:<line number>
...............................................................................

ColourImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( streamWrapper.str() == "1\nUsing code: 2\n2\nUsing code: 0\n3\n" )
with expansion:
  "1
  Using code: 2
  2
  Using code: 0
  3
  "
  ==
  "1
  Using code: 2
  2
  Using code: 0
  3
  "

-------------------------------------------------------------------------------
ColourGuard behaviour
  ColourGuard can be engaged explicitly
-------------------------------------------------------------------------------
ColourImpl.tests.cpp:<line number>
...............................................................................

ColourImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( streamWrapper.str() == "Using code: 2\nA\nB\nUsing code: 0\nC\n" )
with expansion:
  "Using code: 2
  A
  B
  Using code: 0
  C
  "
  ==
  "Using code: 2
  A
  B
  Using code: 0
  C
  "

-------------------------------------------------------------------------------
Combining MatchAllOfGeneric does not nest
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( ( MatcherA() && MatcherB() ) && MatcherC() ), Catch::
  Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && MatcherC() )
with expansion:
  1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
  1 )

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( MatcherA() && ( MatcherB() && MatcherC() ) ), Catch::
  Matchers::Detail:: MatchAllOfGeneric<MatcherA, MatcherB, MatcherC>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, MatcherA() && ( MatcherB() && MatcherC() ) )
with expansion:
  1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
  1 )

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( ( MatcherA() && MatcherB() ) && ( MatcherC() &&
  MatcherD() ) ), Catch::Matchers::Detail:: MatchAllOfGeneric<MatcherA,
  MatcherB, MatcherC, MatcherD>>:: value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, ( MatcherA() && MatcherB() ) && ( MatcherC() && MatcherD() ) )
with expansion:
  1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 and equals: (T)
  1 and equals: true )

-------------------------------------------------------------------------------
Combining MatchAnyOfGeneric does not nest
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( ( MatcherA() || MatcherB() ) || MatcherC() ), Catch::
  Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || MatcherC() )
with expansion:
  1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
  )

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( MatcherA() || ( MatcherB() || MatcherC() ) ), Catch::
  Matchers::Detail:: MatchAnyOfGeneric<MatcherA, MatcherB, MatcherC>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, MatcherA() || ( MatcherB() || MatcherC() ) )
with expansion:
  1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
  )

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( ( MatcherA() || MatcherB() ) || ( MatcherC() ||
  MatcherD() ) ), Catch::Matchers::Detail:: MatchAnyOfGeneric<MatcherA,
  MatcherB, MatcherC, MatcherD>>:: value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, ( MatcherA() || MatcherB() ) || ( MatcherC() || MatcherD() ) )
with expansion:
  1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 or equals: (T) 1
  or equals: true )

-------------------------------------------------------------------------------
Combining MatchNotOfGeneric does not nest
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( !MatcherA() ), Catch::Matchers::Detail::
  MatchNotOfGeneric<MatcherA>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0, !MatcherA() )
with expansion:
  0 not equals: (int) 1 or (string) "1"

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same<decltype( !!MatcherA() ), MatcherA const&>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, !!MatcherA() )
with expansion:
  1 equals: (int) 1 or (string) "1"

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( !!!MatcherA() ), Catch::Matchers::Detail::
  MatchNotOfGeneric<MatcherA>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0, !!!MatcherA() )
with expansion:
  0 not equals: (int) 1 or (string) "1"

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same<decltype( !!!!MatcherA() ), MatcherA const&>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, !!!!MatcherA() )
with expansion:
  1 equals: (int) 1 or (string) "1"

-------------------------------------------------------------------------------
Combining concrete matchers does not use templated matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same<decltype( StartsWith( "foo" ) || ( StartsWith( "bar" ) &&
  EndsWith( "bar" ) && !EndsWith( "foo" ) ) ), Catch::Matchers::Detail::
  MatchAnyOf<std::string>>::value

-------------------------------------------------------------------------------
Combining only templated matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same<decltype( MatcherA() || MatcherB() ), Catch::Matchers::Detail::
  MatchAnyOfGeneric<MatcherA, MatcherB>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, MatcherA() || MatcherB() )
with expansion:
  1 ( equals: (int) 1 or (string) "1" or equals: (long long) 1 )

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same<decltype( MatcherA() && MatcherB() ), Catch::Matchers::Detail::
  MatchAllOfGeneric<MatcherA, MatcherB>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, MatcherA() && MatcherB() )
with expansion:
  1 ( equals: (int) 1 or (string) "1" and equals: (long long) 1 )

Matchers.tests.cpp:<line number>: PASSED:
with message:
  std::is_same< decltype( MatcherA() || !MatcherB() ), Catch::Matchers::Detail:
  :MatchAnyOfGeneric< MatcherA, Catch::Matchers::Detail::MatchNotOfGeneric
  <MatcherB>>>::value

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1, MatcherA() || !MatcherB() )
with expansion:
  1 ( equals: (int) 1 or (string) "1" or not equals: (long long) 1 )

-------------------------------------------------------------------------------
Combining templated and concrete matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( vec, Predicate<std::vector<int>>( []( auto const& v ) { return std::all_of( v.begin(), v.end(), []( int elem ) { return elem % 2 == 1; } ); }, "All elements are odd" ) && !EqualsRange( a ) )
with expansion:
  { 1, 3, 5 } ( matches predicate: "All elements are odd" and not Equals: { 5,
  3, 1 } )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( str, StartsWith( "foo" ) && EqualsRange( arr ) && EndsWith( "bar" ) )
with expansion:
  "foobar" ( starts with: "foo" and Equals: { 'f', 'o', 'o', 'b', 'a', 'r' }
  and ends with: "bar" )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( str, StartsWith( "foo" ) && !EqualsRange( bad_arr ) && EndsWith( "bar" ) )
with expansion:
  "foobar" ( starts with: "foo" and not Equals: { 'o', 'o', 'f', 'b', 'a', 'r'
  } and ends with: "bar" )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( str, EqualsRange( arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) )
with expansion:
  "foobar" ( Equals: { 'f', 'o', 'o', 'b', 'a', 'r' } and starts with: "foo"
  and ends with: "bar" )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( str, !EqualsRange( bad_arr ) && StartsWith( "foo" ) && EndsWith( "bar" ) )
with expansion:
  "foobar" ( not Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } and starts with:
  "foo" and ends with: "bar" )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( str, EqualsRange( bad_arr ) || ( StartsWith( "foo" ) && EndsWith( "bar" ) ) )
with expansion:
  "foobar" ( Equals: { 'o', 'o', 'f', 'b', 'a', 'r' } or ( starts with: "foo"
  and ends with: "bar" ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( str, ( StartsWith( "foo" ) && EndsWith( "bar" ) ) || EqualsRange( bad_arr ) )
with expansion:
  "foobar" ( ( starts with: "foo" and ends with: "bar" ) or Equals: { 'o', 'o',
  'f', 'b', 'a', 'r' } )

-------------------------------------------------------------------------------
Combining templated matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( container, EqualsRange( a ) || EqualsRange( b ) || EqualsRange( c ) )
with expansion:
  { 1, 2, 3 } ( Equals: { 1, 2, 3 } or Equals: { 0, 1, 2 } or Equals: { 4, 5, 6
  } )

-------------------------------------------------------------------------------
Commas in various macros are allowed
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} )

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( std::vector<constructor_throws>{constructor_throws{}, constructor_throws{}} )

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} )

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_NOTHROW( std::vector<int>{1, 2, 3} == std::vector<int>{1, 2, 3} )

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( std::vector<int>{1, 2} == std::vector<int>{1, 2, 3} )
with expansion:
  !({ 1, 2 } == { 1, 2, 3 })

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( std::vector<int>{1, 2} == std::vector<int>{1, 2, 3} )
with expansion:
  !({ 1, 2 } == { 1, 2, 3 })

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_NOFAIL( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  CHECKED_IF( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( true )

Tricky.tests.cpp:<line number>: PASSED:
  CHECKED_ELSE( std::vector<int>{1, 2} == std::vector<int>{1, 2} )
with expansion:
  { 1, 2 } == { 1, 2 }

-------------------------------------------------------------------------------
Comparing function pointers
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( a )
with expansion:
  0x<hex digits>

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( a == &foo )
with expansion:
  0x<hex digits> == 0x<hex digits>

-------------------------------------------------------------------------------
Comparison ops
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( SimplePcg32{} == SimplePcg32{} )
with expansion:
  {?} == {?}

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( SimplePcg32{ 0 } != SimplePcg32{} )
with expansion:
  {?} != {?}

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( SimplePcg32{ 1 } == SimplePcg32{ 2 } )
with expansion:
  !({?} == {?})

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( SimplePcg32{ 1 } != SimplePcg32{ 1 } )
with expansion:
  !({?} != {?})

-------------------------------------------------------------------------------
Comparison with explicitly convertible types
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td == Approx(10.0) )
with expansion:
  StrongDoubleTypedef(10) == Approx( 10.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(10.0) == td )
with expansion:
  Approx( 10.0 ) == StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td != Approx(11.0) )
with expansion:
  StrongDoubleTypedef(10) != Approx( 11.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(11.0) != td )
with expansion:
  Approx( 11.0 ) != StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td <= Approx(10.0) )
with expansion:
  StrongDoubleTypedef(10) <= Approx( 10.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td <= Approx(11.0) )
with expansion:
  StrongDoubleTypedef(10) <= Approx( 11.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(10.0) <= td )
with expansion:
  Approx( 10.0 ) <= StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(9.0) <= td )
with expansion:
  Approx( 9.0 ) <= StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td >= Approx(9.0) )
with expansion:
  StrongDoubleTypedef(10) >= Approx( 9.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( td >= Approx(td) )
with expansion:
  StrongDoubleTypedef(10) >= Approx( 10.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(td) >= td )
with expansion:
  Approx( 10.0 ) >= StrongDoubleTypedef(10)

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx(11.0) >= td )
with expansion:
  Approx( 11.0 ) >= StrongDoubleTypedef(10)

-------------------------------------------------------------------------------
Comparisons between ints where one side is computed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  CHECK( 54 == 6*9 )
with expansion:
  54 == 54

-------------------------------------------------------------------------------
Comparisons between unsigned ints and negative signed ints match c++ standard
behaviour
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  CHECK( ( -1 > 2u ) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  CHECK( -1 > 2u )
with expansion:
  -1 > 2

Condition.tests.cpp:<line number>: PASSED:
  CHECK( ( 2u < -1 ) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  CHECK( 2u < -1 )
with expansion:
  2 < -1

Condition.tests.cpp:<line number>: PASSED:
  CHECK( ( minInt > 2u ) )
with expansion:
  true

Condition.tests.cpp:<line number>: PASSED:
  CHECK( minInt > 2u )
with expansion:
  -2147483648 > 2

-------------------------------------------------------------------------------
Comparisons with int literals don't warn when mixing signed/ unsigned
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( i == 1 )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( ui == 2 )
with expansion:
  2 == 2

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( l == 3 )
with expansion:
  3 == 3

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( ul == 4 )
with expansion:
  4 == 4

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( c == 5 )
with expansion:
  5 == 5

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( uc == 6 )
with expansion:
  6 == 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 1 == i )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 2 == ui )
with expansion:
  2 == 2

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 3 == l )
with expansion:
  3 == 3

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 4 == ul )
with expansion:
  4 == 4

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 5 == c )
with expansion:
  5 == 5

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 6 == uc )
with expansion:
  6 == 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( (std::numeric_limits<uint32_t>::max)() > ul )
with expansion:
  4294967295 (0x<hex digits>) > 4

-------------------------------------------------------------------------------
Composed generic matchers shortcircuit
  MatchAllOf
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( matcher.match( 1 ) )
with expansion:
  !false

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( first.matchCalled )
with expansion:
  true

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( !second.matchCalled )
with expansion:
  true

-------------------------------------------------------------------------------
Composed generic matchers shortcircuit
  MatchAnyOf
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK( matcher.match( 1 ) )
with expansion:
  true

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( first.matchCalled )
with expansion:
  true

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( !second.matchCalled )
with expansion:
  true

-------------------------------------------------------------------------------
Composed matchers shortcircuit
  MatchAllOf
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( matcher.match( 1 ) )
with expansion:
  !false

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( first.matchCalled )
with expansion:
  true

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( !second.matchCalled )
with expansion:
  true

-------------------------------------------------------------------------------
Composed matchers shortcircuit
  MatchAnyOf
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK( matcher.match( 1 ) )
with expansion:
  true

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( first.matchCalled )
with expansion:
  true

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE( !second.matchCalled )
with expansion:
  true

-------------------------------------------------------------------------------
Contains string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), ContainsSubstring( "not there", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" contains: "not there" (case
  insensitive)

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), ContainsSubstring( "STRING" ) )
with expansion:
  "this string contains 'abc' as a substring" contains: "STRING"

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  from var and iterators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  From a temporary container
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( elem % 2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Copy and then generate a range
  Final validation
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( call_count == 1 )
with expansion:
  1 == 1

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( make_data().size() == test_count )
with expansion:
  6 == 6

-------------------------------------------------------------------------------
Cout stream properly declares it writes to stdout
-------------------------------------------------------------------------------
Stream.tests.cpp:<line number>
...............................................................................

Stream.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::makeStream( "-" )->isConsole() )
with expansion:
  true

-------------------------------------------------------------------------------
Custom exceptions can be translated when testing for nothrow
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_NOTHROW( throwCustom() )
due to unexpected exception with message:
  custom exception - not std

-------------------------------------------------------------------------------
Custom exceptions can be translated when testing for throwing as something else
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_AS( throwCustom(), std::exception )
due to unexpected exception with message:
  custom exception - not std

-------------------------------------------------------------------------------
Custom std-exceptions can be custom translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  custom std exception

-------------------------------------------------------------------------------
Default scale is invisible to comparison
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 101.000001 != Approx(100).epsilon(0.01) )
with expansion:
  101.000001 != Approx( 100.0 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( std::pow(10, -5) != Approx(std::pow(10, -7)) )
with expansion:
  0.00001 != Approx( 0.0000001 )

-------------------------------------------------------------------------------
Directly creating an EnumInfo
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK( enumInfo->lookup(0) == "Value1" )
with expansion:
  Value1 == "Value1"

ToString.tests.cpp:<line number>: PASSED:
  CHECK( enumInfo->lookup(1) == "Value2" )
with expansion:
  Value2 == "Value2"

ToString.tests.cpp:<line number>: PASSED:
  CHECK( enumInfo->lookup(3) == "{** unexpected enum value **}" )
with expansion:
  {** unexpected enum value **}
  ==
  "{** unexpected enum value **}"

-------------------------------------------------------------------------------
Empty generators can SKIP in constructor
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:
explicitly with message:
  This generator is empty

-------------------------------------------------------------------------------
Empty stream name opens cout stream
-------------------------------------------------------------------------------
Stream.tests.cpp:<line number>
...............................................................................

Stream.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::makeStream( "" )->isConsole() )
with expansion:
  true

-------------------------------------------------------------------------------
EndsWith string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), EndsWith( "Substring" ) )
with expansion:
  "this string contains 'abc' as a substring" ends with: "Substring"

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), EndsWith( "this", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" ends with: "this" (case
  insensitive)

-------------------------------------------------------------------------------
Enums can quickly have stringification enabled using REGISTER_ENUM
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value1 ) == "Value1" )
with expansion:
  "Value1" == "Value1"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value2 ) == "Value2" )
with expansion:
  "Value2" == "Value2"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value3 ) == "Value3" )
with expansion:
  "Value3" == "Value3"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( EnumClass3::Value4 ) == "{** unexpected enum value **}" )
with expansion:
  "{** unexpected enum value **}"
  ==
  "{** unexpected enum value **}"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( ec3 ) == "Value2" )
with expansion:
  "Value2" == "Value2"

-------------------------------------------------------------------------------
Enums in namespaces can quickly have stringification enabled using
REGISTER_ENUM
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( Bikeshed::Colours::Red ) == "Red" )
with expansion:
  "Red" == "Red"

EnumToString.tests.cpp:<line number>: PASSED:
  REQUIRE( stringify( Bikeshed::Colours::Blue ) == "Blue" )
with expansion:
  "Blue" == "Blue"

-------------------------------------------------------------------------------
Epsilon only applies to Approx's value
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( 101.01 != Approx(100).epsilon(0.01) )
with expansion:
  101.01 != Approx( 100.0 )

-------------------------------------------------------------------------------
Equality checks that should fail
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven == 6 )
with expansion:
  7 == 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven == 8 )
with expansion:
  7 == 8

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven == 0 )
with expansion:
  7 == 0

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 9.11f ) )
with expansion:
  9.1f == Approx( 9.1099996567 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 9.0f ) )
with expansion:
  9.1f == Approx( 9.0 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 1 ) )
with expansion:
  9.1f == Approx( 1.0 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one == Approx( 0 ) )
with expansion:
  9.1f == Approx( 0.0 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.double_pi == Approx( 3.1415 ) )
with expansion:
  3.1415926535 == Approx( 3.1415 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello == "goodbye" )
with expansion:
  "hello" == "goodbye"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello == "hell" )
with expansion:
  "hello" == "hell"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello == "hello1" )
with expansion:
  "hello" == "hello1"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello.size() == 6 )
with expansion:
  5 == 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( x == Approx( 1.301 ) )
with expansion:
  1.3 == Approx( 1.301 )

-------------------------------------------------------------------------------
Equality checks that should succeed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven == 7 )
with expansion:
  7 == 7

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one == Approx( 9.1f ) )
with expansion:
  9.1f == Approx( 9.1000003815 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.double_pi == Approx( 3.1415926535 ) )
with expansion:
  3.1415926535 == Approx( 3.1415926535 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello == "hello" )
with expansion:
  "hello" == "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( "hello" == data.str_hello )
with expansion:
  "hello" == "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello.size() == 5 )
with expansion:
  5 == 5

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( x == Approx( 1.3 ) )
with expansion:
  1.3 == Approx( 1.3 )

-------------------------------------------------------------------------------
Equals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) )
with expansion:
  "this string contains 'abc' as a substring" equals: "this string contains
  'abc' as a substring"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), Equals( "this string contains 'ABC' as a substring", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" equals: "this string contains
  'abc' as a substring" (case insensitive)

-------------------------------------------------------------------------------
Equals string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Equals( "this string contains 'ABC' as a substring" ) )
with expansion:
  "this string contains 'abc' as a substring" equals: "this string contains
  'ABC' as a substring"

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Equals( "something else", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" equals: "something else" (case
  insensitive)

-------------------------------------------------------------------------------
Exception as a value (e.g. in REQUIRE_THROWS_MATCHES) can be stringified
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(WhatException{}) == "This exception has overridden what() method" )
with expansion:
  "This exception has overridden what() method"
  ==
  "This exception has overridden what() method"

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(OperatorException{}) == "OperatorException" )
with expansion:
  "OperatorException" == "OperatorException"

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(StringMakerException{}) == "StringMakerException" )
with expansion:
  "StringMakerException"
  ==
  "StringMakerException"

-------------------------------------------------------------------------------
Exception matchers that fail
  No exception
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
because no exception was thrown where one was expected:

Matchers.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{ 1 } )
because no exception was thrown where one was expected:

-------------------------------------------------------------------------------
Exception matchers that fail
  Type mismatch
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
due to unexpected exception with message:
  Unknown exception

Matchers.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_MATCHES( throwsAsInt( 1 ), SpecialException, ExceptionMatcher{ 1 } )
due to unexpected exception with message:
  Unknown exception

-------------------------------------------------------------------------------
Exception matchers that fail
  Contents are wrong
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_MATCHES( throwsSpecialException( 3 ), SpecialException, ExceptionMatcher{ 1 } )
with expansion:
  SpecialException::what special exception has value of 1

Matchers.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException( 4 ), SpecialException, ExceptionMatcher{ 1 } )
with expansion:
  SpecialException::what special exception has value of 1

-------------------------------------------------------------------------------
Exception matchers that succeed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THROWS_MATCHES( throwsSpecialException( 1 ), SpecialException, ExceptionMatcher{ 1 } )
with expansion:
  SpecialException::what special exception has value of 1

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, ExceptionMatcher{ 2 } )
with expansion:
  SpecialException::what special exception has value of 2

-------------------------------------------------------------------------------
Exception message can be matched
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( StartsWith( "Derived" ) ) )
with expansion:
  DerivedException::what  matches "starts with: "Derived""

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( EndsWith( "::what" ) ) )
with expansion:
  DerivedException::what  matches "ends with: "::what""

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, MessageMatches( !StartsWith( "::what" ) ) )
with expansion:
  DerivedException::what  matches "not starts with: "::what""

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, MessageMatches( StartsWith( "Special" ) ) )
with expansion:
  SpecialException::what  matches "starts with: "Special""

-------------------------------------------------------------------------------
Exception messages can be tested for
  exact match
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), "expected exception" )
with expansion:
  "expected exception" equals: "expected exception"

-------------------------------------------------------------------------------
Exception messages can be tested for
  different case
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), Equals( "expecteD Exception", Catch::CaseSensitive::No ) )
with expansion:
  "expected exception" equals: "expected exception" (case insensitive)

-------------------------------------------------------------------------------
Exception messages can be tested for
  wildcarded
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), StartsWith( "expected" ) )
with expansion:
  "expected exception" starts with: "expected"

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), EndsWith( "exception" ) )
with expansion:
  "expected exception" ends with: "exception"

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), ContainsSubstring( "except" ) )
with expansion:
  "expected exception" contains: "except"

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), ContainsSubstring( "exCept", Catch::CaseSensitive::No ) )
with expansion:
  "expected exception" contains: "except" (case insensitive)

-------------------------------------------------------------------------------
Exceptions matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, Message( "DerivedException::what" ) )
with expansion:
  DerivedException::what exception message matches "DerivedException::what"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsDerivedException(), DerivedException, !Message( "derivedexception::what" ) )
with expansion:
  DerivedException::what not exception message matches "derivedexception::what"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, !Message( "DerivedException::what" ) )
with expansion:
  SpecialException::what not exception message matches "DerivedException::what"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_MATCHES( throwsSpecialException( 2 ), SpecialException, Message( "SpecialException::what" ) )
with expansion:
  SpecialException::what exception message matches "SpecialException::what"

-------------------------------------------------------------------------------
Expected exceptions that don't throw or unexpected exceptions fail the test
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_AS( thisThrows(), std::string )
due to unexpected exception with message:
  expected exception

Exception.tests.cpp:<line number>: FAILED:
  CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error )
because no exception was thrown where one was expected:

Exception.tests.cpp:<line number>: FAILED:
  CHECK_NOTHROW( thisThrows() )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
FAIL aborts the test
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  This is a failure

-------------------------------------------------------------------------------
FAIL does not require an argument
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
FAIL_CHECK does not abort the test
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  This is a failure

Message.tests.cpp:<line number>: warning:
  This message appears in the output

-------------------------------------------------------------------------------
Factorials are computed
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( Factorial(0) == 1 )
with expansion:
  1 == 1

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( Factorial(1) == 1 )
with expansion:
  1 == 1

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( Factorial(2) == 2 )
with expansion:
  2 == 2

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( Factorial(3) == 6 )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( Factorial(10) == 3628800 )
with expansion:
  3628800 (0x<hex digits>) == 3628800 (0x<hex digits>)

-------------------------------------------------------------------------------
Filter generator throws exception for empty generator
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( filter( []( int ) { return false; }, value( 3 ) ), Catch::GeneratorException )

-------------------------------------------------------------------------------
Floating point matchers: double
  Relative
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10., WithinRel( 11.1, 0.1 ) )
with expansion:
  10.0 and 11.1 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10., !WithinRel( 11.2, 0.1 ) )
with expansion:
  10.0 not and 11.2 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., !WithinRel( 0., 0.99 ) )
with expansion:
  1.0 not and 0 are within 99% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0., WithinRel( 0. ) )
with expansion:
  -0.0 and 0 are within 2.22045e-12% of each other

-------------------------------------------------------------------------------
Floating point matchers: double
  Relative
  Some subnormal values
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, WithinRel( v2 ) )
with expansion:
  0.0 and 2.22507e-308 are within 2.22045e-12% of each other

-------------------------------------------------------------------------------
Floating point matchers: double
  Margin
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinAbs( 1., 0 ) )
with expansion:
  1.0 is within 0.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., WithinAbs( 1., 1 ) )
with expansion:
  0.0 is within 1.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) )
with expansion:
  0.0 not is within 0.99 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., !WithinAbs( 1., 0.99 ) )
with expansion:
  0.0 not is within 0.99 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 11., !WithinAbs( 10., 0.5 ) )
with expansion:
  11.0 not is within 0.5 of 10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10., !WithinAbs( 11., 0.5 ) )
with expansion:
  10.0 not is within 0.5 of 11.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10., WithinAbs( -10., 0.5 ) )
with expansion:
  -10.0 is within 0.5 of -10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10., WithinAbs( -9.6, 0.5 ) )
with expansion:
  -10.0 is within 0.5 of -9.6

-------------------------------------------------------------------------------
Floating point matchers: double
  ULPs
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinULP( 1., 0 ) )
with expansion:
  1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.
  0000000000000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( nextafter( 1., 2. ), WithinULP( 1., 1 ) )
with expansion:
  1.0 is within 1 ULPs of 1.0000000000000000e+00 ([9.9999999999999989e-01, 1.
  0000000000000002e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0., WithinULP( nextafter( 0., 1. ), 1 ) )
with expansion:
  0.0 is within 1 ULPs of 4.9406564584124654e-324 ([0.0000000000000000e+00, 9.
  8813129168249309e-324])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinULP( nextafter( 1., 0. ), 1 ) )
with expansion:
  1.0 is within 1 ULPs of 9.9999999999999989e-01 ([9.9999999999999978e-01, 1.
  0000000000000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., !WithinULP( nextafter( 1., 2. ), 0 ) )
with expansion:
  1.0 not is within 0 ULPs of 1.0000000000000002e+00 ([1.0000000000000002e+00,
  1.0000000000000002e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinULP( 1., 0 ) )
with expansion:
  1.0 is within 0 ULPs of 1.0000000000000000e+00 ([1.0000000000000000e+00, 1.
  0000000000000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0., WithinULP( 0., 0 ) )
with expansion:
  -0.0 is within 0 ULPs of 0.0000000000000000e+00 ([0.0000000000000000e+00, 0.
  0000000000000000e+00])

-------------------------------------------------------------------------------
Floating point matchers: double
  Composed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinAbs( 1., 0.5 ) || WithinULP( 2., 1 ) )
with expansion:
  1.0 ( is within 0.5 of 1.0 or is within 1 ULPs of 2.0000000000000000e+00 ([1.
  9999999999999998e+00, 2.0000000000000004e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., WithinAbs( 2., 0.5 ) || WithinULP( 1., 0 ) )
with expansion:
  1.0 ( is within 0.5 of 2.0 or is within 0 ULPs of 1.0000000000000000e+00 ([1.
  0000000000000000e+00, 1.0000000000000000e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.0001, WithinAbs( 0., 0.001 ) || WithinRel( 0., 0.1 ) )
with expansion:
  0.0001 ( is within 0.001 of 0.0 or and 0 are within 10% of each other )

-------------------------------------------------------------------------------
Floating point matchers: double
  Constructor validation
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinAbs( 1., 0. ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinAbs( 1., -1. ), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinULP( 1., 0 ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinRel( 1., 0. ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel( 1., -0.2 ), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel( 1., 1. ), std::domain_error )

-------------------------------------------------------------------------------
Floating point matchers: double
  IsNaN
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., !IsNaN() )
with expansion:
  1.0 not is NaN

-------------------------------------------------------------------------------
Floating point matchers: float
  Relative
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10.f, WithinRel( 11.1f, 0.1f ) )
with expansion:
  10.0f and 11.1 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10.f, !WithinRel( 11.2f, 0.1f ) )
with expansion:
  10.0f not and 11.2 are within 10% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, !WithinRel( 0.f, 0.99f ) )
with expansion:
  1.0f not and 0 are within 99% of each other

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0.f, WithinRel( 0.f ) )
with expansion:
  -0.0f and 0 are within 0.00119209% of each other

-------------------------------------------------------------------------------
Floating point matchers: float
  Relative
  Some subnormal values
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, WithinRel( v2 ) )
with expansion:
  0.0f and 1.17549e-38 are within 0.00119209% of each other

-------------------------------------------------------------------------------
Floating point matchers: float
  Margin
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinAbs( 1.f, 0 ) )
with expansion:
  1.0f is within 0.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, WithinAbs( 1.f, 1 ) )
with expansion:
  0.0f is within 1.0 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) )
with expansion:
  0.0f not is within 0.9900000095 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, !WithinAbs( 1.f, 0.99f ) )
with expansion:
  0.0f not is within 0.9900000095 of 1.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, WithinAbs( -0.f, 0 ) )
with expansion:
  0.0f is within 0.0 of -0.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 11.f, !WithinAbs( 10.f, 0.5f ) )
with expansion:
  11.0f not is within 0.5 of 10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 10.f, !WithinAbs( 11.f, 0.5f ) )
with expansion:
  10.0f not is within 0.5 of 11.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10.f, WithinAbs( -10.f, 0.5f ) )
with expansion:
  -10.0f is within 0.5 of -10.0

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -10.f, WithinAbs( -9.6f, 0.5f ) )
with expansion:
  -10.0f is within 0.5 of -9.6000003815

-------------------------------------------------------------------------------
Floating point matchers: float
  ULPs
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinULP( 1.f, 0 ) )
with expansion:
  1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -1.f, WithinULP( -1.f, 0 ) )
with expansion:
  -1.0f is within 0 ULPs of -1.00000000e+00f ([-1.00000000e+00, -1.00000000e+
  00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( nextafter( 1.f, 2.f ), WithinULP( 1.f, 1 ) )
with expansion:
  1.0f is within 1 ULPs of 1.00000000e+00f ([9.99999940e-01, 1.00000012e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.f, WithinULP( nextafter( 0.f, 1.f ), 1 ) )
with expansion:
  0.0f is within 1 ULPs of 1.40129846e-45f ([0.00000000e+00, 2.80259693e-45])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinULP( nextafter( 1.f, 0.f ), 1 ) )
with expansion:
  1.0f is within 1 ULPs of 9.99999940e-01f ([9.99999881e-01, 1.00000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, !WithinULP( nextafter( 1.f, 2.f ), 0 ) )
with expansion:
  1.0f not is within 0 ULPs of 1.00000012e+00f ([1.00000012e+00, 1.00000012e+
  00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinULP( 1.f, 0 ) )
with expansion:
  1.0f is within 0 ULPs of 1.00000000e+00f ([1.00000000e+00, 1.00000000e+00])

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( -0.f, WithinULP( 0.f, 0 ) )
with expansion:
  -0.0f is within 0 ULPs of 0.00000000e+00f ([0.00000000e+00, 0.00000000e+00])

-------------------------------------------------------------------------------
Floating point matchers: float
  Composed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinAbs( 1.f, 0.5 ) || WithinULP( 1.f, 1 ) )
with expansion:
  1.0f ( is within 0.5 of 1.0 or is within 1 ULPs of 1.00000000e+00f ([9.
  99999940e-01, 1.00000012e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1.f, WithinAbs( 2.f, 0.5 ) || WithinULP( 1.f, 0 ) )
with expansion:
  1.0f ( is within 0.5 of 2.0 or is within 0 ULPs of 1.00000000e+00f ([1.
  00000000e+00, 1.00000000e+00]) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 0.0001f, WithinAbs( 0.f, 0.001f ) || WithinRel( 0.f, 0.1f ) )
with expansion:
  0.0001f ( is within 0.001 of 0.0 or and 0 are within 10% of each other )

-------------------------------------------------------------------------------
Floating point matchers: float
  Constructor validation
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinAbs( 1.f, 0.f ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinAbs( 1.f, -1.f ), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinULP( 1.f, 0 ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinULP( 1.f, static_cast<uint64_t>( -1 ) ), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( WithinRel( 1.f, 0.f ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel( 1.f, -0.2f ), std::domain_error )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( WithinRel( 1.f, 1.f ), std::domain_error )

-------------------------------------------------------------------------------
Floating point matchers: float
  IsNaN
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( 1., !IsNaN() )
with expansion:
  1.0 not is NaN

-------------------------------------------------------------------------------
GENERATE can combine literals and generators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
GENERATE can combine literals and generators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
GENERATE can combine literals and generators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
GENERATE can combine literals and generators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Basic usage
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Basic usage
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Basic usage
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Filtering by predicate
  Throws if there are no matching values
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( filter([] (int) {return false; }, value(1)), Catch::GeneratorException )

-------------------------------------------------------------------------------
Generators -- adapters
  Shortening a range
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 4 )
with expansion:
  1 < 4

-------------------------------------------------------------------------------
Generators -- adapters
  Shortening a range
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 4 )
with expansion:
  2 < 4

-------------------------------------------------------------------------------
Generators -- adapters
  Shortening a range
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 4 )
with expansion:
  3 < 4

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Same type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Same type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Same type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i % 2 == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different deduced type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different deduced type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Transforming elements
  Different deduced type
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( i.size() == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  2 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  3 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  2 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Repeating a generator
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j > 0 )
with expansion:
  3 > 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is not divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  1 == 1

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() < 3 )
with expansion:
  1 < 3

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Number of elements in source is not divisible by chunk size
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 2 )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() == chunk2.back() )
with expansion:
  2 == 2

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.front() < 3 )
with expansion:
  2 < 3

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Chunk size of zero
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Chunk size of zero
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Chunk size of zero
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( chunk2.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Generators -- adapters
  Chunking a generator into sized pieces
  Throws on too small generators
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( chunk(2, value(1)), Catch::GeneratorException )

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -3 < 1

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -2 < 1

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -1 < 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  4 > 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  4 > 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  4 > 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -3 < 2

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -2 < 2

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -1 < 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  8 > 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  8 > 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  8 > 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -3 < 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -2 < 3

-------------------------------------------------------------------------------
Generators -- simple
  one
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( j < i )
with expansion:
  -1 < 3

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  12 > 1

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  12 > 2

-------------------------------------------------------------------------------
Generators -- simple
  two
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( 4u * i > str.size() )
with expansion:
  12 > 3

-------------------------------------------------------------------------------
Generators internals
  Single value
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 123 )
with expansion:
  123 == 123

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Preset values
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Generator combinator
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 4 )
with expansion:
  4 == 4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 0 )
with expansion:
  0 == 0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Explicitly typed generator sequence
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get().size() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == "aa" )
with expansion:
  "aa" == "aa"

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == "bb" )
with expansion:
  "bb" == "bb"

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == "cc" )
with expansion:
  "cc" == "cc"

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Filter generator
  Simple filtering
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Filter generator
  Filter out multiple elements at the start and end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Filter generator
  Throws on construction if it can't get initial element
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( filter([](int) { return false; }, value(1)), Catch::GeneratorException )

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( filter([](int) { return false; }, values({ 1, 2, 3 })), Catch::GeneratorException )

-------------------------------------------------------------------------------
Generators internals
  Take generator
  Take less
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Take generator
  Take more
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Map with explicit return type
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2.0 )
with expansion:
  2.0 == 2.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 4.0 )
with expansion:
  4.0 == 4.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 6.0 )
with expansion:
  6.0 == 6.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Map with deduced return type
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2.0 )
with expansion:
  2.0 == 2.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 4.0 )
with expansion:
  4.0 == 4.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 6.0 )
with expansion:
  6.0 == 6.0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Repeat
  Singular repeat
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Repeat
  Actual repeat
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 3 )
with expansion:
  3 == 3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive auto step
  Integer
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -2 )
with expansion:
  -2 == -2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 0 )
with expansion:
  0 == 0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative auto step
  Integer
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 1 )
with expansion:
  1 == 1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 0 )
with expansion:
  0 == 0

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Integer
  Exact
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Integer
  Slightly over end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Integer
  Slightly under end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Floating Point
  Exact
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -1.0 == Approx( -1.0 )
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.9 == Approx( -0.9 )
with message:
  Current expected value is -0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.8 == Approx( -0.8 )
with message:
  Current expected value is -0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.7 == Approx( -0.7 )
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.6 == Approx( -0.6 )
with message:
  Current expected value is -0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.5 == Approx( -0.5 )
with message:
  Current expected value is -0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.4 == Approx( -0.4 )
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.3 == Approx( -0.3 )
with message:
  Current expected value is -0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.2 == Approx( -0.2 )
with message:
  Current expected value is -0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.1 == Approx( -0.1 )
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.0 == Approx( -0.0 )
with message:
  Current expected value is -1.38778e-16

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1.38778e-16

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.1 == Approx( 0.1 )
with message:
  Current expected value is 0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.2 == Approx( 0.2 )
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.3 == Approx( 0.3 )
with message:
  Current expected value is 0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.3

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.4 == Approx( 0.4 )
with message:
  Current expected value is 0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.5 == Approx( 0.5 )
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.6 == Approx( 0.6 )
with message:
  Current expected value is 0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.6

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.7 == Approx( 0.7 )
with message:
  Current expected value is 0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.8 == Approx( 0.8 )
with message:
  Current expected value is 0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.8

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.9 == Approx( 0.9 )
with message:
  Current expected value is 0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.9

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx( rangeEnd ) )
with expansion:
  1.0 == Approx( 1.0 )

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Floating Point
  Slightly over end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -1.0 == Approx( -1.0 )
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.7 == Approx( -0.7 )
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.4 == Approx( -0.4 )
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.1 == Approx( -0.1 )
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.2 == Approx( 0.2 )
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.5 == Approx( 0.5 )
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Positive manual step
  Floating Point
  Slightly under end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -1.0 == Approx( -1.0 )
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.7 == Approx( -0.7 )
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.4 == Approx( -0.4 )
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  -0.1 == Approx( -0.1 )
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is -0.1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.2 == Approx( 0.2 )
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == Approx(expected) )
with expansion:
  0.5 == Approx( 0.5 )
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true
with message:
  Current expected value is 0.5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative manual step
  Integer
  Exact
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative manual step
  Integer
  Slightly over end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Generators internals
  Range
  Negative manual step
  Integer
  Slightly under end
-------------------------------------------------------------------------------
GeneratorsImpl.tests.cpp:<line number>
...............................................................................

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 5 )
with expansion:
  5 == 5

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == 2 )
with expansion:
  2 == 2

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -1 )
with expansion:
  -1 == -1

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -4 )
with expansion:
  -4 == -4

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.next() )
with expansion:
  true

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE( gen.get() == -7 )
with expansion:
  -7 == -7

GeneratorsImpl.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( gen.next() )
with expansion:
  !false

-------------------------------------------------------------------------------
Greater-than inequalities with different epsilons
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d >= Approx( 1.22 ) )
with expansion:
  1.23 >= Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d >= Approx( 1.23 ) )
with expansion:
  1.23 >= Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( d >= Approx( 1.24 ) )
with expansion:
  !(1.23 >= Approx( 1.24 ))

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d >= Approx( 1.24 ).epsilon(0.1) )
with expansion:
  1.23 >= Approx( 1.24 )

-------------------------------------------------------------------------------
Hashers with different seed produce different hash with same test case
-------------------------------------------------------------------------------
TestCaseInfoHasher.tests.cpp:<line number>
...............................................................................

TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
  REQUIRE( h1( dummy ) != h2( dummy ) )
with expansion:
  3422778688 (0x<hex digits>)
  !=
  130711275 (0x<hex digits>)

-------------------------------------------------------------------------------
Hashers with same seed produce same hash
-------------------------------------------------------------------------------
TestCaseInfoHasher.tests.cpp:<line number>
...............................................................................

TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
  REQUIRE( h1( dummy ) == h2( dummy ) )
with expansion:
  3422778688 (0x<hex digits>)
  ==
  3422778688 (0x<hex digits>)

-------------------------------------------------------------------------------
Hashing different test cases produces different result
  Different test name
-------------------------------------------------------------------------------
TestCaseInfoHasher.tests.cpp:<line number>
...............................................................................

TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
  REQUIRE( h( dummy1 ) != h( dummy2 ) )
with expansion:
  2903002874 (0x<hex digits>)
  !=
  2668622104 (0x<hex digits>)

-------------------------------------------------------------------------------
Hashing different test cases produces different result
  Different classname
-------------------------------------------------------------------------------
TestCaseInfoHasher.tests.cpp:<line number>
...............................................................................

TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
  REQUIRE( h( dummy1 ) != h( dummy2 ) )
with expansion:
  2673152918 (0x<hex digits>)
  !=
  3916075712 (0x<hex digits>)

-------------------------------------------------------------------------------
Hashing different test cases produces different result
  Different tags
-------------------------------------------------------------------------------
TestCaseInfoHasher.tests.cpp:<line number>
...............................................................................

TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
  REQUIRE( h( dummy1 ) != h( dummy2 ) )
with expansion:
  2074929312 (0x<hex digits>)
  !=
  3429949824 (0x<hex digits>)

-------------------------------------------------------------------------------
Hashing test case produces same hash across multiple calls
-------------------------------------------------------------------------------
TestCaseInfoHasher.tests.cpp:<line number>
...............................................................................

TestCaseInfoHasher.tests.cpp:<line number>: PASSED:
  REQUIRE( h( dummy ) == h( dummy ) )
with expansion:
  3422778688 (0x<hex digits>)
  ==
  3422778688 (0x<hex digits>)

-------------------------------------------------------------------------------
INFO and UNSCOPED_INFO can stream multiple arguments
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with messages:
  This info has multiple parts.
  This unscoped info has multiple parts.
  Show infos!

-------------------------------------------------------------------------------
INFO and WARN do not abort tests
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: warning:
  this is a message
  this is a warning


No assertions in test case 'INFO and WARN do not abort tests'

-------------------------------------------------------------------------------
INFO gets logged on failure
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( a == 1 )
with expansion:
  2 == 1
with messages:
  this message should be logged
  so should this

-------------------------------------------------------------------------------
INFO gets logged on failure, even if captured before successful assertions
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  CHECK( a == 2 )
with expansion:
  2 == 2
with message:
  this message may be logged later

Message.tests.cpp:<line number>: FAILED:
  CHECK( a == 1 )
with expansion:
  2 == 1
with messages:
  this message may be logged later
  this message should be logged

Message.tests.cpp:<line number>: FAILED:
  CHECK( a == 0 )
with expansion:
  2 == 0
with messages:
  this message may be logged later
  this message should be logged
  and this, but later

Message.tests.cpp:<line number>: PASSED:
  CHECK( a == 2 )
with expansion:
  2 == 2
with messages:
  this message may be logged later
  this message should be logged
  and this, but later
  but not this

-------------------------------------------------------------------------------
INFO is reset for each loop
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  0 < 10
with messages:
  current counter 0
  i := 0

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  1 < 10
with messages:
  current counter 1
  i := 1

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  2 < 10
with messages:
  current counter 2
  i := 2

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  3 < 10
with messages:
  current counter 3
  i := 3

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  4 < 10
with messages:
  current counter 4
  i := 4

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  5 < 10
with messages:
  current counter 5
  i := 5

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  6 < 10
with messages:
  current counter 6
  i := 6

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  7 < 10
with messages:
  current counter 7
  i := 7

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  8 < 10
with messages:
  current counter 8
  i := 8

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( i < 10 )
with expansion:
  9 < 10
with messages:
  current counter 9
  i := 9

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( i < 10 )
with expansion:
  10 < 10
with messages:
  current counter 10
  i := 10

-------------------------------------------------------------------------------
Incomplete AssertionHandler
-------------------------------------------------------------------------------
AssertionHandler.tests.cpp:<line number>
...............................................................................

AssertionHandler.tests.cpp:<line number>: FAILED:
  REQUIRE( Dummy )
due to unexpected exception with message:
  Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE

-------------------------------------------------------------------------------
Inequality checks that should fail
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven != 7 )
with expansion:
  7 != 7

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one != Approx( 9.1f ) )
with expansion:
  9.1f != Approx( 9.1000003815 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.double_pi != Approx( 3.1415926535 ) )
with expansion:
  3.1415926535 != Approx( 3.1415926535 )

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello != "hello" )
with expansion:
  "hello" != "hello"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello.size() != 5 )
with expansion:
  5 != 5

-------------------------------------------------------------------------------
Inequality checks that should succeed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven != 6 )
with expansion:
  7 != 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven != 8 )
with expansion:
  7 != 8

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 9.11f ) )
with expansion:
  9.1f != Approx( 9.1099996567 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 9.0f ) )
with expansion:
  9.1f != Approx( 9.0 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 1 ) )
with expansion:
  9.1f != Approx( 1.0 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one != Approx( 0 ) )
with expansion:
  9.1f != Approx( 0.0 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.double_pi != Approx( 3.1415 ) )
with expansion:
  3.1415926535 != Approx( 3.1415 )

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello != "goodbye" )
with expansion:
  "hello" != "goodbye"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello != "hell" )
with expansion:
  "hello" != "hell"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello != "hello1" )
with expansion:
  "hello" != "hello1"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello.size() != 6 )
with expansion:
  5 != 6

-------------------------------------------------------------------------------
JsonWriter
  Newly constructed JsonWriter does nothing
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( stream.str() == "" )
with expansion:
  "" == ""

-------------------------------------------------------------------------------
JsonWriter
  Calling writeObject will create an empty pair of braces
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( stream.str() == "{\n}" )
with expansion:
  "{
  }"
  ==
  "{
  }"

-------------------------------------------------------------------------------
JsonWriter
  Calling writeObject with key will create an object to write the value
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( stream.str(), ContainsSubstring( "\"int\": 1," ) && ContainsSubstring( "\"double\": 1.5," ) && ContainsSubstring( "\"true\": true," ) && ContainsSubstring( "\"false\": false," ) && ContainsSubstring( "\"string\": \"this is a string\"," ) && ContainsSubstring( "\"array\": [\n    1,\n    2\n  ]\n}" ) )
with expansion:
  "{
    "int": 1,
    "double": 1.5,
    "true": true,
    "false": false,
    "string": "this is a string",
    "array": [
      1,
      2
    ]
  }" ( contains: ""int": 1," and contains: ""double": 1.5," and contains:
  ""true": true," and contains: ""false": false," and contains: ""string":
  "this is a string"," and contains: ""array": [
      1,
      2
    ]
  }" )

-------------------------------------------------------------------------------
JsonWriter
  nesting objects
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( stream.str(), ContainsSubstring( "\"empty_object\": {\n  }," ) && ContainsSubstring( "\"fully_object\": {\n    \"key\": 1\n  }" ) )
with expansion:
  "{
    "empty_object": {
    },
    "fully_object": {
      "key": 1
    }
  }" ( contains: ""empty_object": {
    }," and contains: ""fully_object": {
      "key": 1
    }" )

-------------------------------------------------------------------------------
JsonWriter
  Calling writeArray will create an empty pair of braces
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( stream.str() == "[\n]" )
with expansion:
  "[
  ]"
  ==
  "[
  ]"

-------------------------------------------------------------------------------
JsonWriter
  Calling writeArray creates array to write the values to
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( stream.str() == "[\n  1,\n  1.5,\n  true,\n  false,\n  \"this is a string\",\n  {\n    \"object\": 42\n  },\n  [\n    \"array\",\n    42.5\n  ]\n]" )
with expansion:
  "[
    1,
    1.5,
    true,
    false,
    "this is a string",
    {
      "object": 42
    },
    [
      "array",
      42.5
    ]
  ]"
  ==
  "[
    1,
    1.5,
    true,
    false,
    "this is a string",
    {
      "object": 42
    },
    [
      "array",
      42.5
    ]
  ]"

-------------------------------------------------------------------------------
JsonWriter
  Moved from JsonObjectWriter shall not insert superfluous brace
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( stream.str() == "{\n}" )
with expansion:
  "{
  }"
  ==
  "{
  }"

-------------------------------------------------------------------------------
JsonWriter
  Moved from JsonArrayWriter shall not insert superfluous bracket
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( stream.str() == "[\n]" )
with expansion:
  "[
  ]"
  ==
  "[
  ]"

-------------------------------------------------------------------------------
JsonWriter
  Custom class shall be quoted
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( stream.str() == "\"custom\"" )
with expansion:
  ""custom"" == ""custom""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  Quote in a string is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\\"\"" )
with expansion:
  ""\""" == ""\"""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  Backslash in a string is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\\\\"" )
with expansion:
  ""\\"" == ""\\""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  Forward slash in a string is **not** escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"/\"" )
with expansion:
  ""/"" == ""/""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  Backspace in a string is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\b\"" )
with expansion:
  ""\b"" == ""\b""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  Formfeed in a string is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\f\"" )
with expansion:
  ""\f"" == ""\f""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  linefeed in a string is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\n\"" )
with expansion:
  ""\n"" == ""\n""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  carriage return in a string is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\r\"" )
with expansion:
  ""\r"" == ""\r""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  tab in a string is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\t\"" )
with expansion:
  ""\t"" == ""\t""

-------------------------------------------------------------------------------
JsonWriter escapes charaters in strings properly
  combination of characters is escaped
-------------------------------------------------------------------------------
Json.tests.cpp:<line number>
...............................................................................

Json.tests.cpp:<line number>: PASSED:
  REQUIRE( sstream.str() == "\"\\\\/\\t\\r\\n\"" )
with expansion:
  ""\\/\t\r\n"" == ""\\/\t\r\n""

-------------------------------------------------------------------------------
Lambdas in assertions
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
  REQUIRE( []() { return true; }() )
with expansion:
  true

-------------------------------------------------------------------------------
Less-than inequalities with different epsilons
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d <= Approx( 1.24 ) )
with expansion:
  1.23 <= Approx( 1.24 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d <= Approx( 1.23 ) )
with expansion:
  1.23 <= Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( d <= Approx( 1.22 ) )
with expansion:
  !(1.23 <= Approx( 1.22 ))

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d <= Approx( 1.22 ).epsilon(0.1) )
with expansion:
  1.23 <= Approx( 1.22 )

-------------------------------------------------------------------------------
ManuallyRegistered
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  was called

-------------------------------------------------------------------------------
Matchers can be (AllOf) composed with the && operator
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), ContainsSubstring( "string" ) && ContainsSubstring( "abc" ) && ContainsSubstring( "substring" ) && ContainsSubstring( "contains" ) )
with expansion:
  "this string contains 'abc' as a substring" ( contains: "string" and
  contains: "abc" and contains: "substring" and contains: "contains" )

-------------------------------------------------------------------------------
Matchers can be (AnyOf) composed with the || operator
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) )
with expansion:
  "this string contains 'abc' as a substring" ( contains: "string" or contains:
  "different" or contains: "random" )

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching2(), ContainsSubstring( "string" ) || ContainsSubstring( "different" ) || ContainsSubstring( "random" ) )
with expansion:
  "some completely different text that contains one common word" ( contains:
  "string" or contains: "different" or contains: "random" )

-------------------------------------------------------------------------------
Matchers can be composed with both && and ||
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "substring" ) )
with expansion:
  "this string contains 'abc' as a substring" ( ( contains: "string" or
  contains: "different" ) and contains: "substring" )

-------------------------------------------------------------------------------
Matchers can be composed with both && and || - failing
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), ( ContainsSubstring( "string" ) || ContainsSubstring( "different" ) ) && ContainsSubstring( "random" ) )
with expansion:
  "this string contains 'abc' as a substring" ( ( contains: "string" or
  contains: "different" ) and contains: "random" )

-------------------------------------------------------------------------------
Matchers can be negated (Not) with the ! operator
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), !ContainsSubstring( "different" ) )
with expansion:
  "this string contains 'abc' as a substring" not contains: "different"

-------------------------------------------------------------------------------
Matchers can be negated (Not) with the ! operator - failing
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), !ContainsSubstring( "substring" ) )
with expansion:
  "this string contains 'abc' as a substring" not contains: "substring"

-------------------------------------------------------------------------------
Mayfail test case with nested sections
  A
  1
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
Mayfail test case with nested sections
  A
  2
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
Mayfail test case with nested sections
  B
  1
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
Mayfail test case with nested sections
  B
  2
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
Mismatching exception messages failing the test
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( thisThrows(), "expected exception" )
with expansion:
  "expected exception" equals: "expected exception"

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
with expansion:
  "expected exception" equals: "should fail"

-------------------------------------------------------------------------------
Multireporter calls reporters and listeners in correct order
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( records == expected )
with expansion:
  { "Hello", "world", "Goodbye", "world" }
  ==
  { "Hello", "world", "Goodbye", "world" }

-------------------------------------------------------------------------------
Multireporter updates ReporterPreferences properly
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false )
with expansion:
  false == false

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Multireporter updates ReporterPreferences properly
  Adding listeners
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
with expansion:
  false == false

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Multireporter updates ReporterPreferences properly
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == false )
with expansion:
  false == false

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Multireporter updates ReporterPreferences properly
  Adding reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == false )
with expansion:
  false == false

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldRedirectStdOut == true )
with expansion:
  true == true

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE( multiReporter.getPreferences().shouldReportAllAssertions == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  3 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  4 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  5 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  6 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  -5 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  -4 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  90 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  91 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  92 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  93 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  94 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  95 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  96 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  97 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  98 > -6

-------------------------------------------------------------------------------
Nested generators and captured variables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( values > -6 )
with expansion:
  99 > -6

-------------------------------------------------------------------------------
Nice descriptive name
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: warning:
  This one ran


No assertions in test case 'Nice descriptive name'

-------------------------------------------------------------------------------
Non-std exceptions can be translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  custom exception

-------------------------------------------------------------------------------
Objects that evaluated in boolean contexts can be checked
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( True )
with expansion:
  {?}

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( !False )
with expansion:
  true

Tricky.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( False )
with expansion:
  !{?}

-------------------------------------------------------------------------------
Optionally static assertions
-------------------------------------------------------------------------------
Compilation.tests.cpp:<line number>
...............................................................................

Compilation.tests.cpp:<line number>: PASSED:
with message:
  std::is_void<void>::value

Compilation.tests.cpp:<line number>: PASSED:
with message:
  !(std::is_void<int>::value)

Compilation.tests.cpp:<line number>: PASSED:
with message:
  std::is_void<void>::value

Compilation.tests.cpp:<line number>: PASSED:
with message:
  !(std::is_void<int>::value)

-------------------------------------------------------------------------------
Ordering comparison checks that should fail
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven > 7 )
with expansion:
  7 > 7

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < 7 )
with expansion:
  7 < 7

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven > 8 )
with expansion:
  7 > 8

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < 6 )
with expansion:
  7 < 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < 0 )
with expansion:
  7 < 0

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven < -1 )
with expansion:
  7 < -1

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven >= 8 )
with expansion:
  7 >= 8

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.int_seven <= 6 )
with expansion:
  7 <= 6

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one < 9 )
with expansion:
  9.1f < 9

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one > 10 )
with expansion:
  9.1f > 10

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.float_nine_point_one > 9.2 )
with expansion:
  9.1f > 9.2

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello > "hello" )
with expansion:
  "hello" > "hello"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello < "hello" )
with expansion:
  "hello" < "hello"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello > "hellp" )
with expansion:
  "hello" > "hellp"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello > "z" )
with expansion:
  "hello" > "z"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello < "hellm" )
with expansion:
  "hello" < "hellm"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello < "a" )
with expansion:
  "hello" < "a"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello >= "z" )
with expansion:
  "hello" >= "z"

Condition.tests.cpp:<line number>: FAILED:
  CHECK( data.str_hello <= "a" )
with expansion:
  "hello" <= "a"

-------------------------------------------------------------------------------
Ordering comparison checks that should succeed
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven < 8 )
with expansion:
  7 < 8

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven > 6 )
with expansion:
  7 > 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven > 0 )
with expansion:
  7 > 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven > -1 )
with expansion:
  7 > -1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven >= 7 )
with expansion:
  7 >= 7

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven >= 6 )
with expansion:
  7 >= 6

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven <= 7 )
with expansion:
  7 <= 7

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.int_seven <= 8 )
with expansion:
  7 <= 8

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one > 9 )
with expansion:
  9.1f > 9

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one < 10 )
with expansion:
  9.1f < 10

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.float_nine_point_one < 9.2 )
with expansion:
  9.1f < 9.2

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello <= "hello" )
with expansion:
  "hello" <= "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello >= "hello" )
with expansion:
  "hello" >= "hello"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello < "hellp" )
with expansion:
  "hello" < "hellp"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello < "zebra" )
with expansion:
  "hello" < "zebra"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello > "hellm" )
with expansion:
  "hello" > "hellm"

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str_hello > "a" )
with expansion:
  "hello" > "a"

-------------------------------------------------------------------------------
Our PCG implementation provides expected results for known seeds
  Default seeded
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  4242248763 (0x<hex digits>)
  ==
  4242248763 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1867888929 (0x<hex digits>)
  ==
  1867888929 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1276619030 (0x<hex digits>)
  ==
  1276619030 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1911218783 (0x<hex digits>)
  ==
  1911218783 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1827115164 (0x<hex digits>)
  ==
  1827115164 (0x<hex digits>)

-------------------------------------------------------------------------------
Our PCG implementation provides expected results for known seeds
  Specific seed
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1472234645 (0x<hex digits>)
  ==
  1472234645 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  868832940 (0x<hex digits>)
  ==
  868832940 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  570883446 (0x<hex digits>)
  ==
  570883446 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  889299803 (0x<hex digits>)
  ==
  889299803 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  4261393167 (0x<hex digits>)
  ==
  4261393167 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  1472234645 (0x<hex digits>)
  ==
  1472234645 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  868832940 (0x<hex digits>)
  ==
  868832940 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  570883446 (0x<hex digits>)
  ==
  570883446 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  889299803 (0x<hex digits>)
  ==
  889299803 (0x<hex digits>)

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( rng() == 0x<hex digits> )
with expansion:
  4261393167 (0x<hex digits>)
  ==
  4261393167 (0x<hex digits>)

-------------------------------------------------------------------------------
Output from all sections is reported
  one
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  Message from section one

-------------------------------------------------------------------------------
Output from all sections is reported
  two
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  Message from section two

-------------------------------------------------------------------------------
Overloaded comma or address-of operators are not used
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( ( EvilMatcher(), EvilMatcher() ), EvilCommaOperatorUsed )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( &EvilMatcher(), EvilAddressOfOperatorUsed )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( EvilMatcher() || ( EvilMatcher() && !EvilMatcher() ) )

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( ( EvilMatcher() && EvilMatcher() ) || !EvilMatcher() )

-------------------------------------------------------------------------------
Parse uints
  proper inputs
-------------------------------------------------------------------------------
Parse.tests.cpp:<line number>
...............................................................................

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE( parseUInt( "0" ) == Optional<unsigned int>{ 0 } )
with expansion:
  {?} == {?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE( parseUInt( "100" ) == Optional<unsigned int>{ 100 } )
with expansion:
  {?} == {?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE( parseUInt( "4294967295" ) == Optional<unsigned int>{ 4294967295 } )
with expansion:
  {?} == {?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE( parseUInt( "0x<hex digits>", 16 ) == Optional<unsigned int>{ 255 } )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
Parse uints
  Bad inputs
-------------------------------------------------------------------------------
Parse.tests.cpp:<line number>
...............................................................................

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( parseUInt( "" ) )
with expansion:
  !{?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( parseUInt( "!!KJHF*#" ) )
with expansion:
  !{?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( parseUInt( "-1" ) )
with expansion:
  !{?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( parseUInt( "4294967296" ) )
with expansion:
  !{?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( parseUInt( "42949672964294967296429496729642949672964294967296" ) )
with expansion:
  !{?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( parseUInt( "2 4" ) )
with expansion:
  !{?}

Parse.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( parseUInt( "0x<hex digits>", 10 ) )
with expansion:
  !{?}

-------------------------------------------------------------------------------
Parsed tags are matched case insensitive
-------------------------------------------------------------------------------
TestSpecParser.tests.cpp:<line number>
...............................................................................

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.hasFilters() )
with expansion:
  true

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.getInvalidSpecs().empty() )
with expansion:
  true

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches( testCase ) )
with expansion:
  true

-------------------------------------------------------------------------------
Parsing sharding-related cli flags
  shard-count
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--shard-count=8" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.shardCount == 8 )
with expansion:
  8 == 8

-------------------------------------------------------------------------------
Parsing sharding-related cli flags
  Negative shard count reports error
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( result )
with expansion:
  !{?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-1' as shard count" ) )
with expansion:
  "Could not parse '-1' as shard count" contains: "Could not parse '-1' as
  shard count"

-------------------------------------------------------------------------------
Parsing sharding-related cli flags
  Zero shard count reports error
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( result )
with expansion:
  !{?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Shard count must be positive" ) )
with expansion:
  "Shard count must be positive" contains: "Shard count must be positive"

-------------------------------------------------------------------------------
Parsing sharding-related cli flags
  shard-index
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--shard-index=2" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.shardIndex == 2 )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Parsing sharding-related cli flags
  Negative shard index reports error
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( result )
with expansion:
  !{?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), ContainsSubstring( "Could not parse '-12' as shard index" ) )
with expansion:
  "Could not parse '-12' as shard index" contains: "Could not parse '-12' as
  shard index"

-------------------------------------------------------------------------------
Parsing sharding-related cli flags
  Shard index 0 is accepted
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--shard-index=0" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.shardIndex == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Parsing tags with non-alphabetical characters is pass-through
-------------------------------------------------------------------------------
TestSpecParser.tests.cpp:<line number>
...............................................................................

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.hasFilters() )
with expansion:
  true
with message:
  tagString := "[tag with spaces]"

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.getInvalidSpecs().empty() )
with expansion:
  true
with message:
  tagString := "[tag with spaces]"

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches( testCase ) )
with expansion:
  true
with message:
  tagString := "[tag with spaces]"

-------------------------------------------------------------------------------
Parsing tags with non-alphabetical characters is pass-through
-------------------------------------------------------------------------------
TestSpecParser.tests.cpp:<line number>
...............................................................................

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.hasFilters() )
with expansion:
  true
with message:
  tagString := "[I said "good day" sir!]"

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.getInvalidSpecs().empty() )
with expansion:
  true
with message:
  tagString := "[I said "good day" sir!]"

TestSpecParser.tests.cpp:<line number>: PASSED:
  REQUIRE( spec.matches( testCase ) )
with expansion:
  true
with message:
  tagString := "[I said "good day" sir!]"

-------------------------------------------------------------------------------
Parsing warnings
  NoAssertions
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cli.parse( { "test", "-w", "NoAssertions" } ) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.warnings == WarnAbout::NoAssertions )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Parsing warnings
  NoTests is no longer supported
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( cli.parse( { "test", "-w", "NoTests" } ) )
with expansion:
  !{?}

-------------------------------------------------------------------------------
Parsing warnings
  Combining multiple warnings
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cli.parse( { "test", "--warn", "NoAssertions", "--warn", "UnmatchedTestSpec" } ) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.warnings == ( WarnAbout::NoAssertions | WarnAbout::UnmatchedTestSpec ) )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Pointers can be compared to null
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( p == 0 )
with expansion:
  0 == 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( p == pNULL )
with expansion:
  0 == 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( p != 0 )
with expansion:
  0x<hex digits> != 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( cp != 0 )
with expansion:
  0x<hex digits> != 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( cpc != 0 )
with expansion:
  0x<hex digits> != 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( returnsNull() == 0 )
with expansion:
  {null string} == 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( returnsConstNull() == 0 )
with expansion:
  {null string} == 0

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( 0 != p )
with expansion:
  0 != 0x<hex digits>

-------------------------------------------------------------------------------
Precision of floating point stringification can be set
  Floats
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( str1.size() == 3 + 5 )
with expansion:
  8 == 8

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( str2.size() == 3 + 10 )
with expansion:
  13 == 13

-------------------------------------------------------------------------------
Precision of floating point stringification can be set
  Double
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  CHECK( str1.size() == 2 + 5 )
with expansion:
  7 == 7

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( str2.size() == 2 + 15 )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
Predicate matcher can accept const char*
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( "foo", Predicate<const char*>( []( const char* const& ) { return true; } ) )
with expansion:
  "foo" matches undescribed predicate

-------------------------------------------------------------------------------
Process can be configured on command line
  empty args don't cause a crash
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.processName == "" )
with expansion:
  "" == ""

-------------------------------------------------------------------------------
Process can be configured on command line
  default - no arguments
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.processName == "test" )
with expansion:
  "test" == "test"

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.shouldDebugBreak == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.abortAfter == -1 )
with expansion:
  -1 == -1

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.noThrow == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.reporterSpecifications.empty() )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( cfg.hasTestFilters() )
with expansion:
  !false

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cfg.getReporterSpecs().size() == 1 )
with expansion:
  1 == 1

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cfg.getReporterSpecs()[0] == Catch::ReporterSpec{ expectedReporter, {}, {}, {} } )
with expansion:
  {?} == {?}

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cfg.getProcessedReporterSpecs().size() == 1 )
with expansion:
  1 == 1

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cfg.getProcessedReporterSpecs()[0] == Catch::ProcessedReporterSpec{ expectedReporter, std::string{}, Catch::ColourMode::PlatformDefault, {} } )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
Process can be configured on command line
  test lists
  Specify one test case using
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.hasTestFilters() )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(*fakeTestCase("notIncluded")) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(*fakeTestCase("test1")) )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  test lists
  Specify one test case exclusion using exclude:
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.hasTestFilters() )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(*fakeTestCase("test1")) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  test lists
  Specify one test case exclusion using ~
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.hasTestFilters() )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(*fakeTestCase("test1")) == false )
with expansion:
  false == false

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( cfg.testSpec().matches(*fakeTestCase("alwaysIncluded")) )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  -r/console
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}
with message:
  result.errorMessage() := ""

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", {}, {}, {} } } )
with expansion:
  { {?} } == { {?} }
with message:
  result.errorMessage() := ""

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  -r/xml
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}
with message:
  result.errorMessage() := ""

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", {}, {}, {} } } )
with expansion:
  { {?} } == { {?} }
with message:
  result.errorMessage() := ""

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  --reporter/junit
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}
with message:
  result.errorMessage() := ""

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterSpecifications == vec_Specs{ { "junit", {}, {}, {} } } )
with expansion:
  { {?} } == { {?} }
with message:
  result.errorMessage() := ""

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  must match one of the available ones
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Unrecognized reporter") )
with expansion:
  "Unrecognized reporter, 'unsupported'. Check available with --list-reporters"
  contains: "Unrecognized reporter"

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  With output file
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}
with message:
  result.errorMessage() := ""

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "out.txt"s, {}, {} } } )
with expansion:
  { {?} } == { {?} }
with message:
  result.errorMessage() := ""

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  With Windows-like absolute path as output file
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( result )
with expansion:
  {?}
with message:
  result.errorMessage() := ""

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterSpecifications == vec_Specs{ { "console", "C:\\Temp\\out.txt"s, {}, {} } } )
with expansion:
  { {?} } == { {?} }
with message:
  result.errorMessage() := ""

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  Multiple reporters
  All with output files
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "junit::out=output-junit.xml" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "junit", "output-junit.xml"s, {}, {} } } )
with expansion:
  { {?}, {?} } == { {?}, {?} }

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  Multiple reporters
  Mixed output files and default output
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "-r", "xml::out=output.xml", "-r", "console" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.reporterSpecifications == vec_Specs{ { "xml", "output.xml"s, {}, {} }, { "console", {}, {}, {} } } )
with expansion:
  { {?}, {?} } == { {?}, {?} }

-------------------------------------------------------------------------------
Process can be configured on command line
  reporter
  Multiple reporters
  cannot have multiple reporters with default output
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), ContainsSubstring("Only one reporter may have unspecified output file.") )
with expansion:
  "Only one reporter may have unspecified output file." contains: "Only one
  reporter may have unspecified output file."

-------------------------------------------------------------------------------
Process can be configured on command line
  debugger
  -b
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-b"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.shouldDebugBreak == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Process can be configured on command line
  debugger
  --break
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--break"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.shouldDebugBreak )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  -a aborts after first failure
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-a"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.abortAfter == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  -x 2 aborts after two failures
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-x", "2"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.abortAfter == 2 )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  -x must be numeric
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), ContainsSubstring("convert") && ContainsSubstring("oops") )
with expansion:
  "Unable to convert 'oops' to destination type" ( contains: "convert" and
  contains: "oops" )

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  Accepted options
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--wait-for-keypress", std::get<0>(input)}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.waitForKeypress == std::get<1>(input) )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Process can be configured on command line
  abort
  wait-for-keypress
  invalid options are reported
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( result.errorMessage(), ContainsSubstring("never") && ContainsSubstring("both") )
with expansion:
  "keypress argument must be one of: never, start, exit or both. 'sometimes'
  not recognised" ( contains: "never" and contains: "both" )

-------------------------------------------------------------------------------
Process can be configured on command line
  nothrow
  -e
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-e"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.noThrow )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  nothrow
  --nothrow
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--nothrow"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.noThrow )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  output filename
  -o filename
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-o", "filename.ext"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.defaultOutputFilename == "filename.ext" )
with expansion:
  "filename.ext" == "filename.ext"

-------------------------------------------------------------------------------
Process can be configured on command line
  output filename
  --out
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--out", "filename.ext"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.defaultOutputFilename == "filename.ext" )
with expansion:
  "filename.ext" == "filename.ext"

-------------------------------------------------------------------------------
Process can be configured on command line
  combinations
  Single character flags can be combined
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "-abe"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.abortAfter == 1 )
with expansion:
  1 == 1

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.shouldDebugBreak )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( config.noThrow == true )
with expansion:
  true == true

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  without option
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.defaultColourMode == ColourMode::PlatformDefault )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  auto
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse( { "test", "--colour-mode", "default" } ) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.defaultColourMode == ColourMode::PlatformDefault )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  yes
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--colour-mode", "ansi"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.defaultColourMode == ColourMode::ANSI )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  no
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({"test", "--colour-mode", "none"}) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.defaultColourMode == ColourMode::None )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Process can be configured on command line
  use-colour
  error
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( !result )
with expansion:
  true

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK_THAT( result.errorMessage(), ContainsSubstring( "colour mode must be one of" ) )
with expansion:
  "colour mode must be one of: default, ansi, win32, or none. 'wrong' is not
  recognised" contains: "colour mode must be one of"

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  samples
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-samples=200" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkSamples == 200 )
with expansion:
  200 == 200

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  resamples
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-resamples=20000" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkResamples == 20000 )
with expansion:
  20000 (0x<hex digits>) == 20000 (0x<hex digits>)

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  confidence-interval
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-confidence-interval=0.99" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkConfidenceInterval == Catch::Approx(0.99) )
with expansion:
  0.99 == Approx( 0.99 )

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  no-analysis
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-no-analysis" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkNoAnalysis )
with expansion:
  true

-------------------------------------------------------------------------------
Process can be configured on command line
  Benchmark options
  warmup-time
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:
  CHECK( cli.parse({ "test", "--benchmark-warmup-time=10" }) )
with expansion:
  {?}

CmdLine.tests.cpp:<line number>: PASSED:
  REQUIRE( config.benchmarkWarmupTime == 10 )
with expansion:
  10 == 10

-------------------------------------------------------------------------------
Product with differing arities - std::tuple<int, double, float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( std::tuple_size<TestType>::value >= 1 )
with expansion:
  3 >= 1

-------------------------------------------------------------------------------
Product with differing arities - std::tuple<int, double>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( std::tuple_size<TestType>::value >= 1 )
with expansion:
  2 >= 1

-------------------------------------------------------------------------------
Product with differing arities - std::tuple<int>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( std::tuple_size<TestType>::value >= 1 )
with expansion:
  1 >= 1

-------------------------------------------------------------------------------
Random seed generation accepts known methods
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )

-------------------------------------------------------------------------------
Random seed generation accepts known methods
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )

-------------------------------------------------------------------------------
Random seed generation accepts known methods
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Catch::generateRandomSeed(method) )

-------------------------------------------------------------------------------
Random seed generation reports unknown methods
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( Catch::generateRandomSeed(static_cast<Catch::GenerateFrom>(77)) )

-------------------------------------------------------------------------------
Range type with sentinel
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK( Catch::Detail::stringify(UsesSentinel{}) == "{  }" )
with expansion:
  "{  }" == "{  }"

-------------------------------------------------------------------------------
Reconstruction should be based on stringification: #914
-------------------------------------------------------------------------------
Decomposition.tests.cpp:<line number>
...............................................................................

Decomposition.tests.cpp:<line number>: FAILED:
  CHECK( truthy(false) )
with expansion:
  Hey, its truthy!

-------------------------------------------------------------------------------
Regex string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Matches( "this STRING contains 'abc' as a substring" ) )
with expansion:
  "this string contains 'abc' as a substring" matches "this STRING contains
  'abc' as a substring" case sensitively

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Matches( "contains 'abc' as a substring" ) )
with expansion:
  "this string contains 'abc' as a substring" matches "contains 'abc' as a
  substring" case sensitively

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), Matches( "this string contains 'abc' as a" ) )
with expansion:
  "this string contains 'abc' as a substring" matches "this string contains
  'abc' as a" case sensitively

-------------------------------------------------------------------------------
Registering reporter with '::' in name fails
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_WITH( registry.registerReporter( "with::doublecolons", Catch::Detail::make_unique<TestReporterFactory>() ), "'::' is not allowed in reporter name: 'with::doublecolons'" )
with expansion:
  "'::' is not allowed in reporter name: 'with::doublecolons'" equals: "'::' is
  not allowed in reporter name: 'with::doublecolons'"

-------------------------------------------------------------------------------
Regression test #1
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( actual, !UnorderedEquals( expected ) )
with expansion:
  { 'a', 'b' } not UnorderedEquals: { 'c', 'b' }

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  Automake reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "All available tags:
     1  [fakeTag]
  1 tag

" contains: "fakeTag"
with message:
  Tested reporter: Automake

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  Automake reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "Available reporters:
    fake reporter:  fake description

" contains: "fake reporter"
with message:
  Tested reporter: Automake

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  Automake reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: Automake

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  compact reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "All available tags:
     1  [fakeTag]
  1 tag

" contains: "fakeTag"
with message:
  Tested reporter: compact

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  compact reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "Available reporters:
    fake reporter:  fake description

" contains: "fake reporter"
with message:
  Tested reporter: compact

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  compact reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: compact

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  console reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "All available tags:
     1  [fakeTag]
  1 tag

" contains: "fakeTag"
with message:
  Tested reporter: console

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  console reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "Available reporters:
    fake reporter:  fake description

" contains: "fake reporter"
with message:
  Tested reporter: console

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  console reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: console

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  JSON reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "{
    "version": 1,
    "metadata": {
      "name": "",
      "rng-seed": 1234,
      "catch2-version": "<version>"
    },
    "listings": {
      "tags": [
        {
          "aliases": [
            "fakeTag"
          ],
          "count": 1
        }
      ]" contains: "fakeTag"
with message:
  Tested reporter: JSON

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  JSON reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "{
    "version": 1,
    "metadata": {
      "name": "",
      "rng-seed": 1234,
      "catch2-version": "<version>"
    },
    "listings": {
      "reporters": [
        {
          "name": "fake reporter",
          "description": "fake description"
        }
      ]" contains: "fake reporter"
with message:
  Tested reporter: JSON

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  JSON reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "{
    "version": 1,
    "metadata": {
      "name": "",
      "rng-seed": 1234,
      "catch2-version": "<version>"
    },
    "listings": {
      "tests": [
        {
          "name": "fake test name",
          "class-name": "",
          "tags": [
            "fakeTestTag"
          ],
          "source-location": {
            "filename": "fake-file.cpp",
            "line": 123456789
          }
        }
      ]" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: JSON

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  JUnit reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  All available tags:
     1  [fakeTag]
  1 tag

" contains: "fakeTag"
with message:
  Tested reporter: JUnit

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  JUnit reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  Available reporters:
    fake reporter:  fake description

" contains: "fake reporter"
with message:
  Tested reporter: JUnit

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  JUnit reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: JUnit

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  SonarQube reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  All available tags:
     1  [fakeTag]
  1 tag

" contains: "fakeTag"
with message:
  Tested reporter: SonarQube

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  SonarQube reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  Available reporters:
    fake reporter:  fake description

" contains: "fake reporter"
with message:
  Tested reporter: SonarQube

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  SonarQube reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: SonarQube

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  TAP reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "All available tags:
     1  [fakeTag]
  1 tag

" contains: "fakeTag"
with message:
  Tested reporter: TAP

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  TAP reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "Available reporters:
    fake reporter:  fake description

" contains: "fake reporter"
with message:
  Tested reporter: TAP

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  TAP reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: TAP

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  TeamCity reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "All available tags:
     1  [fakeTag]
  1 tag

" contains: "fakeTag"
with message:
  Tested reporter: TeamCity

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  TeamCity reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "Available reporters:
    fake reporter:  fake description

" contains: "fake reporter"
with message:
  Tested reporter: TeamCity

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  TeamCity reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: TeamCity

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  XML reporter lists tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fakeTag"s) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  <TagsFromMatchingTests>
    <Tag>
      <Count>1</Count>
      <Aliases>
        <Alias>fakeTag</Alias>
      </Aliases>
    </Tag>
  </TagsFromMatchingTests>" contains: "fakeTag"
with message:
  Tested reporter: XML

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  XML reporter lists reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("fake reporter"s) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  <AvailableReporters>
    <Reporter>
      <Name>fake reporter</Name>
      <Description>fake description</Description>
    </Reporter>
  </AvailableReporters>" contains: "fake reporter"
with message:
  Tested reporter: XML

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( factories.empty() )
with expansion:
  !false

-------------------------------------------------------------------------------
Reporter's write listings to provided stream
  XML reporter lists tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  <MatchingTests>
    <TestCase>
      <Name>fake test name</Name>
      <ClassName/>
      <Tags>[fakeTestTag]</Tags>
      <SourceInfo>
        <File>fake-file.cpp</File>
        <Line>123456789</Line>
      </SourceInfo>
    </TestCase>
  </MatchingTests>" ( contains: "fake test name" and contains: "fakeTestTag" )
with message:
  Tested reporter: XML

-------------------------------------------------------------------------------
Reproducer for #2309 - a very long description past 80 chars (default console
width) with a late colon : blablabla
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
SUCCEED counts as a test pass
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
with message:
  this is a success

-------------------------------------------------------------------------------
SUCCEED does not require an argument
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
          methods
      Given: No operations precede me
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( before == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Scenario: BDD tests requiring Fixtures to provide commonly-accessed data or
          methods
      Given: No operations precede me
       When: We get the count
       Then: Subsequently values are higher
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( after > before )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Scenario: Do that thing with the thing
      Given: This stuff exists
  And given: And some assumption
       When: I do this
       Then: it should do this
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( itDoesThis() )
with expansion:
  true

-------------------------------------------------------------------------------
Scenario: Do that thing with the thing
      Given: This stuff exists
  And given: And some assumption
       When: I do this
       Then: it should do this
        And: do that
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( itDoesThat() )
with expansion:
  true

-------------------------------------------------------------------------------
Scenario: This is a really long scenario name to see how the list command deals
          with wrapping
      Given: A section name that is so long that it cannot fit in a single
             console width
       When: The test headers are printed as part of the normal running of the
             scenario
       Then: The, deliberately very long and overly verbose (you see what I did
             there?) section names must wrap, along with an indent
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
with message:
  boo!

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
       When: it is made larger
       Then: the size and capacity go up
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
       When: it is made larger
       Then: the size and capacity go up
   And when: it is made smaller again
       Then: the size goes down but the capacity stays the same
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
Scenario: Vector resizing affects size and capacity
      Given: an empty vector
       When: we reserve more space
       Then: The capacity is increased but the size remains the same
-------------------------------------------------------------------------------
BDD.tests.cpp:<line number>
...............................................................................

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

BDD.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

A string sent directly to stdout
A string sent directly to stderr
A string sent to stderr via clog
-------------------------------------------------------------------------------
Sends stuff to stdout and stderr
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'Sends stuff to stdout and stderr'

-------------------------------------------------------------------------------
Some simple comparisons between doubles
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == Approx( 1.23 ) )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != Approx( 1.22 ) )
with expansion:
  1.23 != Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != Approx( 1.24 ) )
with expansion:
  1.23 != Approx( 1.24 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == 1.23_a )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != 1.22_a )
with expansion:
  1.23 != Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx( d ) == 1.23 )
with expansion:
  Approx( 1.23 ) == 1.23

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx( d ) != 1.22 )
with expansion:
  Approx( 1.23 ) != 1.22

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( Approx( d ) != 1.24 )
with expansion:
  Approx( 1.23 ) != 1.24

Message from section one
-------------------------------------------------------------------------------
Standard output from all sections is reported
  one
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in section 'one'

Message from section two
-------------------------------------------------------------------------------
Standard output from all sections is reported
  two
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in section 'two'

-------------------------------------------------------------------------------
StartsWith string matcher
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), StartsWith( "This String" ) )
with expansion:
  "this string contains 'abc' as a substring" starts with: "This String"

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( testStringForMatching(), StartsWith( "string", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" starts with: "string" (case
  insensitive)

-------------------------------------------------------------------------------
Static arrays are convertible to string
  Single item
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify(singular) == "{ 1 }" )
with expansion:
  "{ 1 }" == "{ 1 }"

-------------------------------------------------------------------------------
Static arrays are convertible to string
  Multiple
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify(arr) == "{ 3, 2, 1 }" )
with expansion:
  "{ 3, 2, 1 }" == "{ 3, 2, 1 }"

-------------------------------------------------------------------------------
Static arrays are convertible to string
  Non-trivial inner items
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify(arr) == R"({ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } })" )
with expansion:
  "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"
  ==
  "{ { "1:1", "1:2", "1:3" }, { "2:1", "2:2" } }"

-------------------------------------------------------------------------------
String matchers
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testStringForMatching(), ContainsSubstring( "string" ) )
with expansion:
  "this string contains 'abc' as a substring" contains: "string"

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testStringForMatching(), ContainsSubstring( "string", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" contains: "string" (case
  insensitive)

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), ContainsSubstring( "abc" ) )
with expansion:
  "this string contains 'abc' as a substring" contains: "abc"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), ContainsSubstring( "aBC", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" contains: "abc" (case
  insensitive)

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), StartsWith( "this" ) )
with expansion:
  "this string contains 'abc' as a substring" starts with: "this"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), StartsWith( "THIS", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" starts with: "this" (case
  insensitive)

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), EndsWith( "substring" ) )
with expansion:
  "this string contains 'abc' as a substring" ends with: "substring"

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( testStringForMatching(), EndsWith( " SuBsTrInG", Catch::CaseSensitive::No ) )
with expansion:
  "this string contains 'abc' as a substring" ends with: " substring" (case
  insensitive)

-------------------------------------------------------------------------------
StringRef
  Empty string
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( empty.empty() )
with expansion:
  true

String.tests.cpp:<line number>: PASSED:
  REQUIRE( empty.size() == 0 )
with expansion:
  0 == 0

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp( empty.data(), "" ) == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
StringRef
  From string literal
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.empty() == false )
with expansion:
  false == false

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.size() == 5 )
with expansion:
  5 == 5

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp( rawChars, "hello" ) == 0 )
with expansion:
  0 == 0

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.data() == rawChars )
with expansion:
  "hello" == "hello"

-------------------------------------------------------------------------------
StringRef
  From sub-string
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( original == "original" )

String.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( original.data() )

-------------------------------------------------------------------------------
StringRef
  Copy construction is shallow
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( original.begin() == copy.begin() )
with expansion:
  "original string" == "original string"

-------------------------------------------------------------------------------
StringRef
  Copy assignment is shallow
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( original.begin() == copy.begin() )
with expansion:
  "original string" == "original string"

-------------------------------------------------------------------------------
StringRef
  Substrings
  zero-based substring
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss.empty() == false )
with expansion:
  false == false

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss.size() == 5 )
with expansion:
  5 == 5

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strncmp( ss.data(), "hello", 5 ) == 0 )
with expansion:
  0 == 0

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss == "hello" )
with expansion:
  hello == "hello"

-------------------------------------------------------------------------------
StringRef
  Substrings
  non-zero-based substring
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( ss.size() == 6 )
with expansion:
  6 == 6

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp( ss.data(), "world!" ) == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
StringRef
  Substrings
  Pointer values of full refs should match
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.data() == s2.data() )
with expansion:
  "hello world!" == "hello world!"

-------------------------------------------------------------------------------
StringRef
  Substrings
  Pointer values of substring refs should also match
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.data() == ss.data() )
with expansion:
  "hello world!" == "hello world!"

-------------------------------------------------------------------------------
StringRef
  Substrings
  Past the end substring
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.substr(s.size() + 1, 123).empty() )
with expansion:
  true

-------------------------------------------------------------------------------
StringRef
  Substrings
  Substring off the end are trimmed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( std::strcmp(ss.data(), "world!") == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
StringRef
  Substrings
  substring start after the end is empty
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( s.substr(1'000'000, 1).empty() )
with expansion:
  true

-------------------------------------------------------------------------------
StringRef
  Comparisons are deep
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  CHECK( reinterpret_cast<char*>(buffer1) != reinterpret_cast<char*>(buffer2) )
with expansion:
  "Hello" != "Hello"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( left == right )
with expansion:
  Hello == Hello

String.tests.cpp:<line number>: PASSED:
  REQUIRE( left != left.substr(0, 3) )
with expansion:
  Hello != Hel

-------------------------------------------------------------------------------
StringRef
  from std::string
  implicitly constructed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr == "a standard string" )
with expansion:
  a standard string == "a standard string"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr.size() == stdStr.size() )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
StringRef
  from std::string
  explicitly constructed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr == "a standard string" )
with expansion:
  a standard string == "a standard string"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr.size() == stdStr.size() )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
StringRef
  from std::string
  assigned
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr == "a standard string" )
with expansion:
  a standard string == "a standard string"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( sr.size() == stdStr.size() )
with expansion:
  17 == 17

-------------------------------------------------------------------------------
StringRef
  to std::string
  explicitly constructed
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr == "a stringref" )
with expansion:
  "a stringref" == "a stringref"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr.size() == sr.size() )
with expansion:
  11 == 11

-------------------------------------------------------------------------------
StringRef
  to std::string
  assigned
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr == "a stringref" )
with expansion:
  "a stringref" == "a stringref"

String.tests.cpp:<line number>: PASSED:
  REQUIRE( stdStr.size() == sr.size() )
with expansion:
  11 == 11

-------------------------------------------------------------------------------
StringRef
  std::string += StringRef
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( lhs == "some string += the stringref contents" )
with expansion:
  "some string += the stringref contents"
  ==
  "some string += the stringref contents"

-------------------------------------------------------------------------------
StringRef
  StringRef + StringRef
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
  REQUIRE( together == "abrakadabra" )
with expansion:
  "abrakadabra" == "abrakadabra"

-------------------------------------------------------------------------------
StringRef at compilation time
  Simple constructors
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
with message:
  empty.size() == 0

String.tests.cpp:<line number>: PASSED:
with message:
  empty.begin() == empty.end()

String.tests.cpp:<line number>: PASSED:
with message:
  stringref.size() == 3

String.tests.cpp:<line number>: PASSED:
with message:
  stringref.data() == abc

String.tests.cpp:<line number>: PASSED:
with message:
  stringref.begin() == abc

String.tests.cpp:<line number>: PASSED:
with message:
  stringref.begin() != stringref.end()

String.tests.cpp:<line number>: PASSED:
with message:
  stringref.substr(10, 0).empty()

String.tests.cpp:<line number>: PASSED:
with message:
  stringref.substr(2, 1).data() == abc + 2

String.tests.cpp:<line number>: PASSED:
with message:
  stringref[1] == 'b'

String.tests.cpp:<line number>: PASSED:
with message:
  shortened.size() == 2

String.tests.cpp:<line number>: PASSED:
with message:
  shortened.data() == abc

String.tests.cpp:<line number>: PASSED:
with message:
  shortened.begin() != shortened.end()

-------------------------------------------------------------------------------
StringRef at compilation time
  UDL construction
-------------------------------------------------------------------------------
String.tests.cpp:<line number>
...............................................................................

String.tests.cpp:<line number>: PASSED:
with message:
  !(sr1.empty())

String.tests.cpp:<line number>: PASSED:
with message:
  sr1.size() == 3

String.tests.cpp:<line number>: PASSED:
with message:
  sr2.empty()

String.tests.cpp:<line number>: PASSED:
with message:
  sr2.size() == 0

-------------------------------------------------------------------------------
Stringifying char arrays with statically known sizes - char
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
with expansion:
  ""abc"" == ""abc""

ToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
with expansion:
  ""abc"" == ""abc""

-------------------------------------------------------------------------------
Stringifying char arrays with statically known sizes - signed char
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
with expansion:
  ""abc"" == ""abc""

ToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
with expansion:
  ""abc"" == ""abc""

-------------------------------------------------------------------------------
Stringifying char arrays with statically known sizes - unsigned char
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify( with_null_terminator ) == R"("abc")"s )
with expansion:
  ""abc"" == ""abc""

ToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify( no_null_terminator ) == R"("abc")"s )
with expansion:
  ""abc"" == ""abc""

-------------------------------------------------------------------------------
Stringifying std::chrono::duration helpers
-------------------------------------------------------------------------------
ToStringChrono.tests.cpp:<line number>
...............................................................................

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( minute == seconds )
with expansion:
  1 m == 60 s

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( hour != seconds )
with expansion:
  1 h != 60 s

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( micro != milli )
with expansion:
  1 us != 1 ms

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( nano != micro )
with expansion:
  1 ns != 1 us

-------------------------------------------------------------------------------
Stringifying std::chrono::duration with weird ratios
-------------------------------------------------------------------------------
ToStringChrono.tests.cpp:<line number>
...............................................................................

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( half_minute != femto_second )
with expansion:
  1 [30/1]s != 1 fs

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( pico_second != atto_second )
with expansion:
  1 ps != 1 as

-------------------------------------------------------------------------------
Stringifying std::chrono::time_point<system_clock>
-------------------------------------------------------------------------------
ToStringChrono.tests.cpp:<line number>
...............................................................................

ToStringChrono.tests.cpp:<line number>: PASSED:
  REQUIRE( now != later )
with expansion:
  {iso8601-timestamp}
  !=
  {iso8601-timestamp}

-------------------------------------------------------------------------------
Tabs and newlines show in output
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( s1 == s2 )
with expansion:
  "if ($b == 10) {
  		$a	= 20;
  }"
  ==
  "if ($b == 10) {
  	$a = 20;
  }
  "

-------------------------------------------------------------------------------
Tag alias can be registered against tag patterns
  The same tag alias can only be registered once
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, ContainsSubstring( "[@zzz]" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "[@zzz]"

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, ContainsSubstring( "file" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "file"

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, ContainsSubstring( "2" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "2"

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THAT( what, ContainsSubstring( "10" ) )
with expansion:
  "error: tag alias, '[@zzz]' already registered.
  	First seen at: file:2
  	Redefined at: file:10" contains: "10"

-------------------------------------------------------------------------------
Tag alias can be registered against tag patterns
  Tag aliases must be of the form [@name]
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "[no ampersat]", "", Catch::SourceLineInfo( "file", 3 ) ) )

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "[the @ is not at the start]", "", Catch::SourceLineInfo( "file", 3 ) ) )

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "@no square bracket at start]", "", Catch::SourceLineInfo( "file", 3 ) ) )

Tag.tests.cpp:<line number>: PASSED:
  CHECK_THROWS( registry.add( "[@no square bracket at end", "", Catch::SourceLineInfo( "file", 3 ) ) )

-------------------------------------------------------------------------------
Tags with spaces and non-alphanumerical characters are accepted
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.tags.size() == 2 )
with expansion:
  2 == 2

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testCase.tags, VectorContains( Tag( "tag with spaces" ) ) && VectorContains( Tag( "I said \"good day\" sir!"_catch_sr ) ) )
with expansion:
  { {?}, {?} } ( Contains: {?} and Contains: {?} )

-------------------------------------------------------------------------------
Template test case method with test types specified inside std::tuple - MyTypes
- 0
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Template test case method with test types specified inside std::tuple - MyTypes
- 1
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
Template test case method with test types specified inside std::tuple - MyTypes
- 2
-------------------------------------------------------------------------------
Class.tests.cpp:<line number>
...............................................................................

Class.tests.cpp:<line number>: PASSED:
  REQUIRE( Template_Fixture<TestType>::m_a == 1 )
with expansion:
  1.0 == 1

-------------------------------------------------------------------------------
Template test case with test types specified inside non-copyable and non-
movable std::tuple - NonCopyableAndNonMovableTypes - 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside non-copyable and non-
movable std::tuple - NonCopyableAndNonMovableTypes - 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside non-default-constructible
std::tuple - MyNonDefaultConstructibleTypes - 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside non-default-constructible
std::tuple - MyNonDefaultConstructibleTypes - 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside std::tuple - MyTypes - 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside std::tuple - MyTypes - 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  1 > 0

-------------------------------------------------------------------------------
Template test case with test types specified inside std::tuple - MyTypes - 2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( sizeof(TestType) > 0 )
with expansion:
  4 > 0

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - float
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - int
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::string
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTest: vectors can be sized and resized - std::tuple<int,float>
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  12 == 12

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  12 >= 12

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  12 >= 12

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - (std::tuple<int, float>), 6
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  6 == 6

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  6 >= 6

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  8 == 8

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  8 >= 8

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  8 >= 8

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - float,4
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  4 == 4

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  4 >= 4

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - int,5
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 2 * V )
with expansion:
  30 == 30

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  30 >= 30

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 2 * V )
with expansion:
  30 >= 30

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
TemplateTestSig: vectors can be sized and resized - std::string,15
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == V )
with expansion:
  15 == 15

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= V )
with expansion:
  15 >= 15

-------------------------------------------------------------------------------
Test case with identical tags keeps just one
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.tags.size() == 1 )
with expansion:
  1 == 1

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.tags[0] == Tag( "tag1" ) )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
Test case with one argument
-------------------------------------------------------------------------------
VariadicMacros.tests.cpp:<line number>
...............................................................................

VariadicMacros.tests.cpp:<line number>: PASSED:
with message:
  no assertions

-------------------------------------------------------------------------------
Test enum bit values
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( 0x<hex digits> == bit30and31 )
with expansion:
  3221225472 (0x<hex digits>) == 3221225472

-------------------------------------------------------------------------------
Test with special, characters "in name
-------------------------------------------------------------------------------
CmdLine.tests.cpp:<line number>
...............................................................................

CmdLine.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
Testing checked-if
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_IF( true )

Misc.tests.cpp:<line number>: PASSED:

Misc.tests.cpp:<line number>: FAILED - but was ok:
  CHECKED_IF( false )

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_ELSE( true )

Misc.tests.cpp:<line number>: FAILED - but was ok:
  CHECKED_ELSE( false )

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
Testing checked-if 2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_IF( true )

Misc.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
Testing checked-if 3
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED - but was ok:
  CHECKED_ELSE( false )

Misc.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
Testing checked-if 4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_ELSE( true )

Misc.tests.cpp:<line number>: FAILED:
  {Unknown expression after the reported line}
due to unexpected exception with message:
  Uncaught exception should fail!

-------------------------------------------------------------------------------
Testing checked-if 5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED - but was ok:
  CHECKED_ELSE( false )

Misc.tests.cpp:<line number>: FAILED:
  {Unknown expression after the reported line}
due to unexpected exception with message:
  Uncaught exception should fail!

-------------------------------------------------------------------------------
The NO_FAIL macro reports a failure but does not fail the test
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED - but was ok:
  CHECK_NOFAIL( 1 == 2 )


No assertions in test case 'The NO_FAIL macro reports a failure but does not fail the test'

-------------------------------------------------------------------------------
The default listing implementation write to provided stream
  Listing tags
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring("[fakeTag]"s) )
with expansion:
  "All available tags:
     1  [fakeTag]
  1 tag

" contains: "[fakeTag]"

-------------------------------------------------------------------------------
The default listing implementation write to provided stream
  Listing reporters
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake reporter"s ) && ContainsSubstring( "fake description"s ) )
with expansion:
  "Available reporters:
    fake reporter:  fake description

" ( contains: "fake reporter" and contains: "fake description" )

-------------------------------------------------------------------------------
The default listing implementation write to provided stream
  Listing tests
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fake test name"s ) && ContainsSubstring( "fakeTestTag"s ) )
with expansion:
  "All available test cases:
    fake test name
        [fakeTestTag]
  1 test case

" ( contains: "fake test name" and contains: "fakeTestTag" )

-------------------------------------------------------------------------------
The default listing implementation write to provided stream
  Listing listeners
-------------------------------------------------------------------------------
Reporters.tests.cpp:<line number>
...............................................................................

Reporters.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( listingString, ContainsSubstring( "fakeListener"s ) && ContainsSubstring( "fake description"s ) )
with expansion:
  "Registered listeners:
    fakeListener:  fake description

" ( contains: "fakeListener" and contains: "fake description" )

-------------------------------------------------------------------------------
This test 'should' fail but doesn't
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
with message:
  oops!

-------------------------------------------------------------------------------
Thrown string literals are translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  For some reason someone is throwing a string literal!

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  successfully close one section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isSuccessfullyCompleted() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  fail one section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  fail one section
  re-enter after failed section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  fail one section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  fail one section
  re-enter after failed section and find next section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
  Successfully close S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isSuccessfullyCompleted() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1b.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() == false )
with expansion:
  false == false

-------------------------------------------------------------------------------
Tracker
  successfully close one section, then find another
  Re-enter - skips S1 and enters S2
  fail S2
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( ctx.completedCycle() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2b.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase2.isSuccessfullyCompleted() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase3.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1c.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2c.isOpen() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase3.isSuccessfullyCompleted() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isOpen() )
with expansion:
  true

-------------------------------------------------------------------------------
Tracker
  open a nested section
-------------------------------------------------------------------------------
PartTracker.tests.cpp:<line number>
...............................................................................

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isOpen() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s2.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( s1.isComplete() )
with expansion:
  true

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() == false )
with expansion:
  false == false

PartTracker.tests.cpp:<line number>: PASSED:
  REQUIRE( testCase.isComplete() )
with expansion:
  true

-------------------------------------------------------------------------------
Trim strings
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(no_whitespace)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(leading_whitespace)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(trailing_whitespace)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(std::string(whitespace_at_both_ends)) == no_whitespace )
with expansion:
  "There is no extra whitespace here"
  ==
  "There is no extra whitespace here"

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(no_whitespace)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(leading_whitespace)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(trailing_whitespace)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

StringManip.tests.cpp:<line number>: PASSED:
  REQUIRE( trim(StringRef(whitespace_at_both_ends)) == StringRef(no_whitespace) )
with expansion:
  There is no extra whitespace here
  ==
  There is no extra whitespace here

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Container conversions
  Two equal containers of different container types
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_a, RangeEquals( c_array ) )
with expansion:
  { 1, 2, 3 } elements are { 1, 2, 3 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_a, UnorderedRangeEquals( c_array ) )
with expansion:
  { 1, 2, 3 } unordered elements are { 1, 2, 3 }

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Container conversions
  Two equal containers of different container types (differ in array N)
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_3, !RangeEquals( array_int_4 ) )
with expansion:
  { 1, 2, 3 } not elements are { 1, 2, 3, 4 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_3, !UnorderedRangeEquals( array_int_4 ) )
with expansion:
  { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Container conversions
  Two equal containers of different container types and value types
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_a, RangeEquals( vector_char_a ) )
with expansion:
  { 1, 2, 3 } elements are { 1, 2, 3 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_a, UnorderedRangeEquals( vector_char_a ) )
with expansion:
  { 1, 2, 3 } unordered elements are { 1, 2, 3 }

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Container conversions
  Two equal containers, one random access, one not
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
with message:
  ContainerIsRandomAccess( array_int_a ) != ContainerIsRandomAccess(
  list_char_a )

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_a, RangeEquals( list_char_a ) )
with expansion:
  { 1, 2, 3 } elements are { 1, 2, 3 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_int_a, UnorderedRangeEquals( list_char_a ) )
with expansion:
  { 1, 2, 3 } unordered elements are { 1, 2, 3 }

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Value type
  Two equal containers of different value types
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_int_a, RangeEquals( vector_char_a ) )
with expansion:
  { 1, 2, 3 } elements are { 1, 2, 3 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_int_a, UnorderedRangeEquals( vector_char_a ) )
with expansion:
  { 1, 2, 3 } unordered elements are { 1, 2, 3 }

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Value type
  Two non-equal containers of different value types
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_int_a, !RangeEquals( vector_char_b ) )
with expansion:
  { 1, 2, 3 } not elements are { 1, 2, 2 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_int_a, !UnorderedRangeEquals( vector_char_b ) )
with expansion:
  { 1, 2, 3 } not unordered elements are { 1, 2, 2 }

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Ranges with begin that needs ADL
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( a, !RangeEquals( b ) )
with expansion:
  { 1, 2, 3 } not elements are { 3, 2, 1 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( a, UnorderedRangeEquals( b ) )
with expansion:
  { 1, 2, 3 } unordered elements are { 3, 2, 1 }

-------------------------------------------------------------------------------
Type conversions of RangeEquals and similar
  Custom predicate
  Two equal non-empty containers (close enough)
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, RangeEquals( array_a_plus_1, close_enough ) )
with expansion:
  { 1, 2, 3 } elements are { 2, 3, 4 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, UnorderedRangeEquals( array_a_plus_1, close_enough ) )
with expansion:
  { 1, 2, 3 } unordered elements are { 2, 3, 4 }

-------------------------------------------------------------------------------
Unexpected exceptions can be translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  3.14

-------------------------------------------------------------------------------
Upcasting special member functions
  Move constructor
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( bptr->i == 3 )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Upcasting special member functions
  move assignment
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( bptr->i == 3 )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
Usage of AllMatch range matcher
  Basic usage
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AllMatch(SizeIs(5)) )
with expansion:
  { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
  }, { 1, 0, 0, -1, 5 } } all match has size == 5

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AllMatch(Contains(0) && Contains(1)) )
with expansion:
  { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
  }, { 1, 0, 0, -1, 5 } } not all match ( contains element 0 and contains
  element 1 )

-------------------------------------------------------------------------------
Usage of AllMatch range matcher
  Type requires ADL found begin and end
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( needs_adl, AllMatch( Predicate<int>( []( int elem ) { return elem < 6; } ) ) )
with expansion:
  { 1, 2, 3, 4, 5 } all match matches undescribed predicate

-------------------------------------------------------------------------------
Usage of AllMatch range matcher
  Shortcircuiting
  All are read
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, allMatch )
with expansion:
  { 1, 2, 3, 4, 5 } all match matches undescribed predicate

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[3] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[4] )
with expansion:
  true

-------------------------------------------------------------------------------
Usage of AllMatch range matcher
  Shortcircuiting
  Short-circuited
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, !allMatch )
with expansion:
  { 1, 2, 3, 4, 5 } not all match matches undescribed predicate

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[3] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[4] )
with expansion:
  !false

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Basic usage
  All true evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AllTrue() )
with expansion:
  { true, true, true, true, true } contains only true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Basic usage
  Empty evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AllTrue() )
with expansion:
  {  } contains only true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Basic usage
  One false evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AllTrue() )
with expansion:
  { true, true, false, true, true } not contains only true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Basic usage
  All false evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AllTrue() )
with expansion:
  { false, false, false, false, false } not contains only true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Contained type is convertible to bool
  All true evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AllTrue() )
with expansion:
  { true, true, true, true, true } contains only true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Contained type is convertible to bool
  One false evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AllTrue() )
with expansion:
  { true, true, false, true, true } not contains only true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Contained type is convertible to bool
  All false evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AllTrue() )
with expansion:
  { false, false, false, false, false } not contains only true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Shortcircuiting
  All are read
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, AllTrue() )
with expansion:
  { true, true, true, true, true } contains only true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[3] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[4] )
with expansion:
  true

-------------------------------------------------------------------------------
Usage of AllTrue range matcher
  Shortcircuiting
  Short-circuited
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, !AllTrue() )
with expansion:
  { true, true, false, true, true } not contains only true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[3] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[4] )
with expansion:
  !false

-------------------------------------------------------------------------------
Usage of AnyMatch range matcher
  Basic usage
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AnyMatch(SizeIs(5)) )
with expansion:
  { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
  }, { 1, 0, 0, -1, 5 } } any match has size == 5

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AnyMatch(Contains(0) && Contains(10)) )
with expansion:
  { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
  }, { 1, 0, 0, -1, 5 } } not any match ( contains element 0 and contains
  element 10 )

-------------------------------------------------------------------------------
Usage of AnyMatch range matcher
  Type requires ADL found begin and end
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( needs_adl, AnyMatch( Predicate<int>( []( int elem ) { return elem < 3; } ) ) )
with expansion:
  { 1, 2, 3, 4, 5 } any match matches undescribed predicate

-------------------------------------------------------------------------------
Usage of AnyMatch range matcher
  Shortcircuiting
  All are read
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, !anyMatch )
with expansion:
  { 1, 2, 3, 4, 5 } not any match matches undescribed predicate

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[3] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[4] )
with expansion:
  true

-------------------------------------------------------------------------------
Usage of AnyMatch range matcher
  Shortcircuiting
  Short-circuited
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, anyMatch )
with expansion:
  { 1, 2, 3, 4, 5 } any match matches undescribed predicate

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[1] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[2] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[3] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[4] )
with expansion:
  !false

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Basic usage
  All true evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AnyTrue() )
with expansion:
  { true, true, true, true, true } contains at least one true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Basic usage
  Empty evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AnyTrue() )
with expansion:
  {  } not contains at least one true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Basic usage
  One true evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AnyTrue() )
with expansion:
  { false, false, true, false, false } contains at least one true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Basic usage
  All false evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AnyTrue() )
with expansion:
  { false, false, false, false, false } not contains at least one true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Contained type is convertible to bool
  All true evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AnyTrue() )
with expansion:
  { true, true, true, true, true } contains at least one true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Contained type is convertible to bool
  One true evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, AnyTrue() )
with expansion:
  { false, false, true, false, false } contains at least one true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Contained type is convertible to bool
  All false evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !AnyTrue() )
with expansion:
  { false, false, false, false, false } not contains at least one true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Shortcircuiting
  All are read
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, AnyTrue() )
with expansion:
  { false, false, false, false, true } contains at least one true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[3] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[4] )
with expansion:
  true

-------------------------------------------------------------------------------
Usage of AnyTrue range matcher
  Shortcircuiting
  Short-circuited
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, AnyTrue() )
with expansion:
  { false, false, true, true, true } contains at least one true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[3] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[4] )
with expansion:
  !false

-------------------------------------------------------------------------------
Usage of NoneMatch range matcher
  Basic usage
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, NoneMatch(SizeIs(6)) )
with expansion:
  { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
  }, { 1, 0, 0, -1, 5 } } none match has size == 6

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !NoneMatch(Contains(0) && Contains(1)) )
with expansion:
  { { 0, 1, 2, 3, 5 }, { 4, -3, -2, 5, 0 }, { 0, 0, 0, 5, 0 }, { 0, -5, 0, 5, 0
  }, { 1, 0, 0, -1, 5 } } not none match ( contains element 0 and contains
  element 1 )

-------------------------------------------------------------------------------
Usage of NoneMatch range matcher
  Type requires ADL found begin and end
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( needs_adl, NoneMatch( Predicate<int>( []( int elem ) { return elem > 6; } ) ) )
with expansion:
  { 1, 2, 3, 4, 5 } none match matches undescribed predicate

-------------------------------------------------------------------------------
Usage of NoneMatch range matcher
  Shortcircuiting
  All are read
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, noneMatch )
with expansion:
  { 1, 2, 3, 4, 5 } none match matches undescribed predicate

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[3] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[4] )
with expansion:
  true

-------------------------------------------------------------------------------
Usage of NoneMatch range matcher
  Shortcircuiting
  Short-circuited
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, !noneMatch )
with expansion:
  { 1, 2, 3, 4, 5 } not none match matches undescribed predicate

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[1] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[2] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[3] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[4] )
with expansion:
  !false

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Basic usage
  All true evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !NoneTrue() )
with expansion:
  { true, true, true, true, true } not contains no true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Basic usage
  Empty evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, NoneTrue() )
with expansion:
  {  } contains no true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Basic usage
  One true evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !NoneTrue() )
with expansion:
  { false, false, true, false, false } not contains no true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Basic usage
  All false evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, NoneTrue() )
with expansion:
  { false, false, false, false, false } contains no true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Contained type is convertible to bool
  All true evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !NoneTrue() )
with expansion:
  { true, true, true, true, true } not contains no true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Contained type is convertible to bool
  One true evaluates to false
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, !NoneTrue() )
with expansion:
  { false, false, true, false, false } not contains no true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Contained type is convertible to bool
  All false evaluates to true
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( data, NoneTrue() )
with expansion:
  { false, false, false, false, false } contains no true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Shortcircuiting
  All are read
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, NoneTrue() )
with expansion:
  { false, false, false, false, false } contains no true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[3] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[4] )
with expansion:
  true

-------------------------------------------------------------------------------
Usage of NoneTrue range matcher
  Shortcircuiting
  Short-circuited
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked, !NoneTrue() )
with expansion:
  { false, false, true, true, true } not contains no true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[3] )
with expansion:
  !false

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked.m_derefed[4] )
with expansion:
  !false

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Basic usage
  Empty container matches empty container
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty_vector, RangeEquals( empty_vector ) )
with expansion:
  {  } elements are {  }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Basic usage
  Empty container does not match non-empty container
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty_vector, !RangeEquals( non_empty_vector ) )
with expansion:
  {  } not elements are { 1 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( non_empty_vector, !RangeEquals( empty_vector ) )
with expansion:
  { 1 } not elements are {  }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Basic usage
  Two equal 1-length non-empty containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( non_empty_array, RangeEquals( non_empty_array ) )
with expansion:
  { 1 } elements are { 1 }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Basic usage
  Two equal-sized, equal, non-empty containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_a, RangeEquals( array_a ) )
with expansion:
  { 1, 2, 3 } elements are { 1, 2, 3 }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Basic usage
  Two equal-sized, non-equal, non-empty containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_a, !RangeEquals( array_b ) )
with expansion:
  { 1, 2, 3 } not elements are { 2, 2, 3 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_a, !RangeEquals( array_c ) )
with expansion:
  { 1, 2, 3 } not elements are { 1, 2, 2 }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Basic usage
  Two non-equal-sized, non-empty containers (with same first elements)
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, !RangeEquals( vector_b ) )
with expansion:
  { 1, 2, 3 } not elements are { 1, 2, 3, 4 }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Custom predicate
  Two equal non-empty containers (close enough)
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, RangeEquals( vector_a_plus_1, close_enough ) )
with expansion:
  { 1, 2, 3 } elements are { 2, 3, 4 }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Custom predicate
  Two non-equal non-empty containers (close enough)
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, !RangeEquals( vector_b, close_enough ) )
with expansion:
  { 1, 2, 3 } not elements are { 3, 3, 4 }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Ranges that need ADL begin/end
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl2 ) )
with expansion:
  { 1, 2, 3, 4, 5 } elements are { 1, 2, 3, 4, 5 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( needs_adl1, RangeEquals( needs_adl3, []( int l, int r ) { return l + 1 == r; } ) )
with expansion:
  { 1, 2, 3, 4, 5 } elements are { 2, 3, 4, 5, 6 }

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Check short-circuiting behaviour
  Check short-circuits on failure
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked1, !RangeEquals( arr ) )
with expansion:
  { 1, 2, 3, 4 } not elements are { 1, 2, 4, 4 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked1.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked1.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked1.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( mocked1.m_derefed[3] )
with expansion:
  !false

-------------------------------------------------------------------------------
Usage of RangeEquals range matcher
  Check short-circuiting behaviour
  All elements are checked on success
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( mocked1, RangeEquals( arr ) )
with expansion:
  { 1, 2, 3, 4 } elements are { 1, 2, 3, 4 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked1.m_derefed[0] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked1.m_derefed[1] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked1.m_derefed[2] )
with expansion:
  true

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE( mocked1.m_derefed[3] )
with expansion:
  true

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Basic usage
  Empty container matches empty container
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty_vector, UnorderedRangeEquals( empty_vector ) )
with expansion:
  {  } unordered elements are {  }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Basic usage
  Empty container does not match non-empty container
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty_vector, !UnorderedRangeEquals( non_empty_vector ) )
with expansion:
  {  } not unordered elements are { 1 }

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( non_empty_vector, !UnorderedRangeEquals( empty_vector ) )
with expansion:
  { 1 } not unordered elements are {  }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Basic usage
  Two equal 1-length non-empty containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( non_empty_array, UnorderedRangeEquals( non_empty_array ) )
with expansion:
  { 1 } unordered elements are { 1 }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Basic usage
  Two equal-sized, equal, non-empty containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_a, UnorderedRangeEquals( array_a ) )
with expansion:
  { 1, 2, 3 } unordered elements are { 1, 2, 3 }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Basic usage
  Two equal-sized, non-equal, non-empty containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( array_a, !UnorderedRangeEquals( array_b ) )
with expansion:
  { 1, 2, 3 } not unordered elements are { 2, 2, 3 }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Basic usage
  Two non-equal-sized, non-empty containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b ) )
with expansion:
  { 1, 2, 3 } not unordered elements are { 1, 2, 3, 4 }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Custom predicate
  Two equal non-empty containers (close enough)
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, UnorderedRangeEquals( vector_a_plus_1, close_enough ) )
with expansion:
  { 1, 10, 20 } unordered elements are { 11, 21, 2 }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Custom predicate
  Two non-equal non-empty containers (close enough)
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  CHECK_THAT( vector_a, !UnorderedRangeEquals( vector_b, close_enough ) )
with expansion:
  { 1, 10, 21 } not unordered elements are { 11, 21, 3 }

-------------------------------------------------------------------------------
Usage of UnorderedRangeEquals range matcher
  Ranges that need ADL begin/end
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( needs_adl1, UnorderedRangeEquals( needs_adl2 ) )
with expansion:
  { 1, 2, 3, 4, 5 } unordered elements are { 1, 2, 3, 4, 5 }

-------------------------------------------------------------------------------
Usage of the SizeIs range matcher
  Some with stdlib containers
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( empty_vec, SizeIs(0) )
with expansion:
  {  } has size == 0

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( empty_vec, !SizeIs(2) )
with expansion:
  {  } not has size == 2

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( empty_vec, SizeIs(Lt(2)) )
with expansion:
  {  } size matches is less than 2

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( arr, SizeIs(2) )
with expansion:
  { 0, 0 } has size == 2

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( arr, SizeIs( Lt(3)) )
with expansion:
  { 0, 0 } size matches is less than 3

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( arr, !SizeIs(!Lt(3)) )
with expansion:
  { 0, 0 } not size matches not is less than 3

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( map, SizeIs(3) )
with expansion:
  { {?}, {?}, {?} } has size == 3

-------------------------------------------------------------------------------
Usage of the SizeIs range matcher
  Type requires ADL found size free function
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( unrelated::ADL_size{}, SizeIs(12) )
with expansion:
  {?} has size == 12

-------------------------------------------------------------------------------
Usage of the SizeIs range matcher
  Type has size member
-------------------------------------------------------------------------------
MatchersRanges.tests.cpp:<line number>
...............................................................................

MatchersRanges.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( has_size{}, SizeIs(13) )
with expansion:
  {?} has size == 13

-------------------------------------------------------------------------------
Use a custom approx
-------------------------------------------------------------------------------
Approx.tests.cpp:<line number>
...............................................................................

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == approx( 1.23 ) )
with expansion:
  1.23 == Approx( 1.23 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == approx( 1.22 ) )
with expansion:
  1.23 == Approx( 1.22 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d == approx( 1.24 ) )
with expansion:
  1.23 == Approx( 1.24 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( d != approx( 1.25 ) )
with expansion:
  1.23 != Approx( 1.25 )

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) == 1.23 )
with expansion:
  Approx( 1.23 ) == 1.23

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) == 1.22 )
with expansion:
  Approx( 1.23 ) == 1.22

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) == 1.24 )
with expansion:
  Approx( 1.23 ) == 1.24

Approx.tests.cpp:<line number>: PASSED:
  REQUIRE( approx( d ) != 1.25 )
with expansion:
  Approx( 1.23 ) != 1.25

-------------------------------------------------------------------------------
Variadic macros
  Section with one argument
-------------------------------------------------------------------------------
VariadicMacros.tests.cpp:<line number>
...............................................................................

VariadicMacros.tests.cpp:<line number>: PASSED:
with message:
  no assertions

-------------------------------------------------------------------------------
Vector Approx matcher
  Empty vector is roughly equal to an empty vector
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( empty, Approx( empty ) )
with expansion:
  {  } is approx: {  }

-------------------------------------------------------------------------------
Vector Approx matcher
  Vectors with elements
  A vector is approx equal to itself
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx( v1 ) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx<double>( { 1., 2., 3. } ) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.0, 2.0, 3.0 }

-------------------------------------------------------------------------------
Vector Approx matcher
  Vectors with elements
  Different length
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, !Approx( temp ) )
with expansion:
  { 1.0, 2.0, 3.0 } not is approx: { 1.0, 2.0, 3.0, 4.0 }

-------------------------------------------------------------------------------
Vector Approx matcher
  Vectors with elements
  Same length, different elements
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, !Approx( v2 ) )
with expansion:
  { 1.0, 2.0, 3.0 } not is approx: { 1.5, 2.5, 3.5 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx( v2 ).margin( 0.5 ) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx( v2 ).epsilon( 0.5 ) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( v1, Approx( v2 ).epsilon( 0.1 ).scale( 500 ) )
with expansion:
  { 1.0, 2.0, 3.0 } is approx: { 1.5, 2.5, 3.5 }

-------------------------------------------------------------------------------
Vector Approx matcher -- failing
  Empty and non empty vectors are not approx equal
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, Approx( t1 ) )
with expansion:
  {  } is approx: { 1.0, 2.0 }

-------------------------------------------------------------------------------
Vector Approx matcher -- failing
  Just different vectors
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v1, Approx( v2 ) )
with expansion:
  { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 }

-------------------------------------------------------------------------------
Vector matchers
  Contains (element)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, VectorContains( 1 ) )
with expansion:
  { 1, 2, 3 } Contains: 1

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, VectorContains( 2 ) )
with expansion:
  { 1, 2, 3 } Contains: 2

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5, ( VectorContains<int, CustomAllocator<int>>( 2 ) ) )
with expansion:
  { 1, 2, 3 } Contains: 2

-------------------------------------------------------------------------------
Vector matchers
  Contains (vector)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Contains( v2 ) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Contains<int>( { 1, 2 } ) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Contains( v2 ) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Contains( empty ) )
with expansion:
  { 1, 2, 3 } Contains: {  }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty, Contains( empty ) )
with expansion:
  {  } Contains: {  }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5, ( Contains<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5, Contains( v6 ) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2 }

-------------------------------------------------------------------------------
Vector matchers
  Contains (element), composed
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, VectorContains( 1 ) && VectorContains( 2 ) )
with expansion:
  { 1, 2, 3 } ( Contains: 1 and Contains: 2 )

-------------------------------------------------------------------------------
Vector matchers
  Equals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Equals( v ) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty, Equals( empty ) )
with expansion:
  {  } Equals: {  }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Equals<int>( { 1, 2, 3 } ) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, Equals( v2 ) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5, ( Equals<int, std::allocator<int>, CustomAllocator<int>>( v2 ) ) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5, Equals( v6 ) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2, 3 }

-------------------------------------------------------------------------------
Vector matchers
  UnorderedEquals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, UnorderedEquals( v ) )
with expansion:
  { 1, 2, 3 } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v, UnorderedEquals<int>( { 3, 2, 1 } ) )
with expansion:
  { 1, 2, 3 } UnorderedEquals: { 3, 2, 1 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( empty, UnorderedEquals( empty ) )
with expansion:
  {  } UnorderedEquals: {  }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( permuted, UnorderedEquals( v ) )
with expansion:
  { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( permuted, UnorderedEquals( v ) )
with expansion:
  { 2, 3, 1 } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5, ( UnorderedEquals<int, std::allocator<int>, CustomAllocator<int>>( permuted ) ) )
with expansion:
  { 1, 2, 3 } UnorderedEquals: { 2, 3, 1 }

Matchers.tests.cpp:<line number>: PASSED:
  CHECK_THAT( v5_permuted, UnorderedEquals( v5 ) )
with expansion:
  { 1, 3, 2 } UnorderedEquals: { 1, 2, 3 }

-------------------------------------------------------------------------------
Vector matchers that fail
  Contains (element)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, VectorContains( -1 ) )
with expansion:
  { 1, 2, 3 } Contains: -1

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, VectorContains( 1 ) )
with expansion:
  {  } Contains: 1

-------------------------------------------------------------------------------
Vector matchers that fail
  Contains (vector)
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, Contains( v ) )
with expansion:
  {  } Contains: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, Contains( v2 ) )
with expansion:
  { 1, 2, 3 } Contains: { 1, 2, 4 }

-------------------------------------------------------------------------------
Vector matchers that fail
  Equals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, Equals( v2 ) )
with expansion:
  { 1, 2, 3 } Equals: { 1, 2 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v2, Equals( v ) )
with expansion:
  { 1, 2 } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, Equals( v ) )
with expansion:
  {  } Equals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, Equals( empty ) )
with expansion:
  { 1, 2, 3 } Equals: {  }

-------------------------------------------------------------------------------
Vector matchers that fail
  UnorderedEquals
-------------------------------------------------------------------------------
Matchers.tests.cpp:<line number>
...............................................................................

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( v, UnorderedEquals( empty ) )
with expansion:
  { 1, 2, 3 } UnorderedEquals: {  }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( empty, UnorderedEquals( v ) )
with expansion:
  {  } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( permuted, UnorderedEquals( v ) )
with expansion:
  { 1, 3 } UnorderedEquals: { 1, 2, 3 }

Matchers.tests.cpp:<line number>: FAILED:
  CHECK_THAT( permuted, UnorderedEquals( v ) )
with expansion:
  { 3, 1 } UnorderedEquals: { 1, 2, 3 }

-------------------------------------------------------------------------------
When checked exceptions are thrown they can be expected or unexpected
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS_AS( thisThrows(), std::domain_error )

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( thisDoesntThrow() )

Exception.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( thisThrows() )

-------------------------------------------------------------------------------
When unchecked exceptions are thrown directly they are always failures
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  unexpected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown during a CHECK the test should continue
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  CHECK( thisThrows() == 0 )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown during a REQUIRE the test should abort
fail
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  REQUIRE( thisThrows() == 0 )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown from functions they are always failures
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
  CHECK( thisThrows() == 0 )
due to unexpected exception with message:
  expected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown from sections they are always failures
  section name
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  unexpected exception

-------------------------------------------------------------------------------
When unchecked exceptions are thrown, but caught, they do not affect the test
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................


No assertions in test case 'When unchecked exceptions are thrown, but caught, they do not affect the test'

-------------------------------------------------------------------------------
X/level/0/a
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
X/level/0/b
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
X/level/1/a
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
X/level/1/b
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
XmlEncode
  normal string
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "normal string" ) == "normal string" )
with expansion:
  "normal string" == "normal string"

-------------------------------------------------------------------------------
XmlEncode
  empty string
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "" ) == "" )
with expansion:
  "" == ""

-------------------------------------------------------------------------------
XmlEncode
  string with ampersand
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith & jones" ) == "smith &amp; jones" )
with expansion:
  "smith &amp; jones" == "smith &amp; jones"

-------------------------------------------------------------------------------
XmlEncode
  string with less-than
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith < jones" ) == "smith &lt; jones" )
with expansion:
  "smith &lt; jones" == "smith &lt; jones"

-------------------------------------------------------------------------------
XmlEncode
  string with greater-than
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith > jones" ) == "smith > jones" )
with expansion:
  "smith > jones" == "smith > jones"

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "smith ]]> jones" ) == "smith ]]&gt; jones" )
with expansion:
  "smith ]]&gt; jones"
  ==
  "smith ]]&gt; jones"

-------------------------------------------------------------------------------
XmlEncode
  string with quotes
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( stringWithQuotes ) == stringWithQuotes )
with expansion:
  "don't "quote" me on that"
  ==
  "don't "quote" me on that"

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't &quot;quote&quot; me on that" )
with expansion:
  "don't &quot;quote&quot; me on that"
  ==
  "don't &quot;quote&quot; me on that"

-------------------------------------------------------------------------------
XmlEncode
  string with control char (1)
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "[\x01]" ) == "[\\x01]" )
with expansion:
  "[\x01]" == "[\x01]"

-------------------------------------------------------------------------------
XmlEncode
  string with control char (x7F)
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE( encode( "[\x7F]" ) == "[\\x7F]" )
with expansion:
  "[\x7F]" == "[\x7F]"

-------------------------------------------------------------------------------
XmlWriter writes boolean attributes as true/false
-------------------------------------------------------------------------------
Xml.tests.cpp:<line number>
...............................................................................

Xml.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( stream.str(), ContainsSubstring(R"(attr1="true")") && ContainsSubstring(R"(attr2="false")") )
with expansion:
  "<?xml version="1.0" encoding="UTF-8"?>
  <Element1 attr1="true" attr2="false"/>
  " ( contains: "attr1="true"" and contains: "attr2="false"" )

-------------------------------------------------------------------------------
a succeeding test can still be skipped
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: PASSED:

Skip.tests.cpp:<line number>: SKIPPED:

-------------------------------------------------------------------------------
analyse no analysis
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.mean.point.count() == 23 )
with expansion:
  23.0 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.mean.lower_bound.count() == 23 )
with expansion:
  23.0 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.mean.upper_bound.count() == 23 )
with expansion:
  23.0 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.standard_deviation.point.count() == 0 )
with expansion:
  0.0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.standard_deviation.lower_bound.count() == 0 )
with expansion:
  0.0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.standard_deviation.upper_bound.count() == 0 )
with expansion:
  0.0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.outliers.total() == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.outliers.low_mild == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.outliers.low_severe == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.outliers.high_mild == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.outliers.high_severe == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.outliers.samples_seen == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( analysis.outlier_variance == 0 )
with expansion:
  0.0 == 0

-------------------------------------------------------------------------------
array<int, N> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( empty ) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( oneValue ) == "{ 42 }" )
with expansion:
  "{ 42 }" == "{ 42 }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( twoValues ) == "{ 42, 250 }" )
with expansion:
  "{ 42, 250 }" == "{ 42, 250 }"

-------------------------------------------------------------------------------
benchmark function call
  without chronometer
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.started == 1 )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.finished == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.started == 1 )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.finished == 1 )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( called == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
benchmark function call
  with chronometer
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.started == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.finished == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.started == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( model.finished == 0 )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( called == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
boolean member
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( obj.prop != 0 )
with expansion:
  0x<hex digits> != 0

-------------------------------------------------------------------------------
checkedElse
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_ELSE( flag )
with expansion:
  true

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( testCheckedElse( true ) )
with expansion:
  true

-------------------------------------------------------------------------------
checkedElse, failing
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED - but was ok:
  CHECKED_ELSE( flag )
with expansion:
  false

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( testCheckedElse( false ) )
with expansion:
  false

-------------------------------------------------------------------------------
checkedIf
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECKED_IF( flag )
with expansion:
  true

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( testCheckedIf( true ) )
with expansion:
  true

-------------------------------------------------------------------------------
checkedIf, failing
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED - but was ok:
  CHECKED_IF( flag )
with expansion:
  false

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( testCheckedIf( false ) )
with expansion:
  false

-------------------------------------------------------------------------------
classify_outliers
  none
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
with expansion:
  6 == 6

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_severe == los )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_mild == lom )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_mild == him )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_severe == his )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.total() == los + lom + him + his )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
classify_outliers
  low severe
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
with expansion:
  6 == 6

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_severe == los )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_mild == lom )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_mild == him )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_severe == his )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.total() == los + lom + him + his )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
classify_outliers
  low mild
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
with expansion:
  6 == 6

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_severe == los )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_mild == lom )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_mild == him )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_severe == his )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.total() == los + lom + him + his )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
classify_outliers
  high mild
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
with expansion:
  6 == 6

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_severe == los )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_mild == lom )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_mild == him )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_severe == his )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.total() == los + lom + him + his )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
classify_outliers
  high severe
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
with expansion:
  6 == 6

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_severe == los )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_mild == lom )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_mild == him )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_severe == his )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.total() == los + lom + him + his )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
classify_outliers
  mixed
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.samples_seen == static_cast<int>(x.size()) )
with expansion:
  6 == 6

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_severe == los )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.low_mild == lom )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_mild == him )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.high_severe == his )
with expansion:
  0 == 0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( o.total() == los + lom + him + his )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
comparisons between const int variables
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( unsigned_char_var == 1 )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( unsigned_short_var == 1 )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( unsigned_int_var == 1 )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( unsigned_long_var == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
comparisons between int variables
-------------------------------------------------------------------------------
Condition.tests.cpp:<line number>
...............................................................................

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_char_var )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_short_var )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_int_var )
with expansion:
  1 == 1

Condition.tests.cpp:<line number>: PASSED:
  REQUIRE( long_var == unsigned_long_var )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
convertToBits
-------------------------------------------------------------------------------
FloatingPoint.tests.cpp:<line number>
...............................................................................

FloatingPoint.tests.cpp:<line number>: PASSED:
  CHECK( convertToBits( 0.f ) == 0 )
with expansion:
  0 == 0

FloatingPoint.tests.cpp:<line number>: PASSED:
  CHECK( convertToBits( -0.f ) == ( 1ULL << 31 ) )
with expansion:
  2147483648 (0x<hex digits>)
  ==
  2147483648 (0x<hex digits>)

FloatingPoint.tests.cpp:<line number>: PASSED:
  CHECK( convertToBits( 0. ) == 0 )
with expansion:
  0 == 0

FloatingPoint.tests.cpp:<line number>: PASSED:
  CHECK( convertToBits( -0. ) == ( 1ULL << 63 ) )
with expansion:
  9223372036854775808 (0x<hex digits>)
  ==
  9223372036854775808 (0x<hex digits>)

FloatingPoint.tests.cpp:<line number>: PASSED:
  CHECK( convertToBits( std::numeric_limits<float>::denorm_min() ) == 1 )
with expansion:
  1 == 1

FloatingPoint.tests.cpp:<line number>: PASSED:
  CHECK( convertToBits( std::numeric_limits<double>::denorm_min() ) == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
dynamic skipping works with generators
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:
explicitly with message:
  skipping because answer = 41

-------------------------------------------------------------------------------
dynamic skipping works with generators
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
dynamic skipping works with generators
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:
explicitly with message:
  skipping because answer = 43

-------------------------------------------------------------------------------
empty tags are not allowed
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( Catch::TestCaseInfo("", { "test with an empty tag", "[]" }, dummySourceLineInfo) )

-------------------------------------------------------------------------------
erfc_inv
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( erfc_inv(1.103560) == Approx(-0.09203687623843015) )
with expansion:
  -0.0920368762 == Approx( -0.0920368762 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( erfc_inv(1.067400) == Approx(-0.05980291115763361) )
with expansion:
  -0.0598029112 == Approx( -0.0598029112 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( erfc_inv(0.050000) == Approx(1.38590382434967796) )
with expansion:
  1.3859038243 == Approx( 1.3859038243 )

-------------------------------------------------------------------------------
estimate_clock_resolution
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res.mean.count() == rate )
with expansion:
  2000.0 == 2000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res.outliers.total() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
even more nested SECTION tests
  c
  d (leaf)
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
even more nested SECTION tests
  c
  e (leaf)
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
even more nested SECTION tests
  f (leaf)
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
failed assertions before SKIP cause test case to fail
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: FAILED:
  CHECK( 3 == 4 )

Skip.tests.cpp:<line number>: SKIPPED:

-------------------------------------------------------------------------------
failing for some generator values causes entire test case to fail
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
failing for some generator values causes entire test case to fail
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:

-------------------------------------------------------------------------------
failing for some generator values causes entire test case to fail
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
failing for some generator values causes entire test case to fail
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:

-------------------------------------------------------------------------------
failing in some unskipped sections causes entire test case to fail
  skipped
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:

-------------------------------------------------------------------------------
failing in some unskipped sections causes entire test case to fail
  not skipped
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: FAILED:

-------------------------------------------------------------------------------
first tag
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'first tag'

loose text artifact
-------------------------------------------------------------------------------
has printf
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................


No assertions in test case 'has printf'

-------------------------------------------------------------------------------
is_unary_function
-------------------------------------------------------------------------------
Clara.tests.cpp:<line number>
...............................................................................

Clara.tests.cpp:<line number>: PASSED:
with message:
  Catch::Clara::Detail::is_unary_function<decltype(unary1)>::value

Clara.tests.cpp:<line number>: PASSED:
with message:
  Catch::Clara::Detail::is_unary_function<decltype(unary2)>::value

Clara.tests.cpp:<line number>: PASSED:
with message:
  Catch::Clara::Detail::is_unary_function<decltype(unary3)>::value

Clara.tests.cpp:<line number>: PASSED:
with message:
  Catch::Clara::Detail::is_unary_function<decltype(unary4)>::value

Clara.tests.cpp:<line number>: PASSED:
with message:
  Catch::Clara::Detail::is_unary_function<decltype(unary5)>::value

Clara.tests.cpp:<line number>: PASSED:
with message:
  Catch::Clara::Detail::is_unary_function<decltype(unary6)>::value

Clara.tests.cpp:<line number>: PASSED:
with message:
  !(Catch::Clara::Detail::is_unary_function<decltype(binary1)>::value)

Clara.tests.cpp:<line number>: PASSED:
with message:
  !(Catch::Clara::Detail::is_unary_function<decltype(binary2)>::value)

Clara.tests.cpp:<line number>: PASSED:
with message:
  !(Catch::Clara::Detail::is_unary_function<decltype(nullary1)>::value)

Clara.tests.cpp:<line number>: PASSED:
with message:
  !(Catch::Clara::Detail::is_unary_function<decltype(nullary2)>::value)

Clara.tests.cpp:<line number>: PASSED:
with message:
  !(Catch::Clara::Detail::is_unary_function<int>::value)

Clara.tests.cpp:<line number>: PASSED:
with message:
  !(Catch::Clara::Detail::is_unary_function<std::string const&>::value)

-------------------------------------------------------------------------------
just failure
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  Previous info should not be seen

-------------------------------------------------------------------------------
just failure after unscoped info
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
explicitly with message:
  previous unscoped info SHOULD not be seen

-------------------------------------------------------------------------------
just info
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in test case 'just info'

-------------------------------------------------------------------------------
just unscoped info
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................


No assertions in test case 'just unscoped info'

-------------------------------------------------------------------------------
long long
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( l == std::numeric_limits<long long>::max() )
with expansion:
  9223372036854775807 (0x<hex digits>)
  ==
  9223372036854775807 (0x<hex digits>)

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 0
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( b > a )
with expansion:
  0 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 1
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( b > a )
with expansion:
  1 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 2
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  2 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 3
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  3 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 4
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  4 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 5
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  5 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 6
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  6 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 7
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  7 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 8
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  8 > 1

-------------------------------------------------------------------------------
looped SECTION tests
  b is currently: 9
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( b > a )
with expansion:
  9 > 1

-------------------------------------------------------------------------------
looped tests
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[0] (1) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[1] (1) is even

Misc.tests.cpp:<line number>: PASSED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  0 == 0
with message:
  Testing if fib[2] (2) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[3] (3) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[4] (5) is even

Misc.tests.cpp:<line number>: PASSED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  0 == 0
with message:
  Testing if fib[5] (8) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[6] (13) is even

Misc.tests.cpp:<line number>: FAILED:
  CHECK( ( fib[i] % 2 ) == 0 )
with expansion:
  1 == 0
with message:
  Testing if fib[7] (21) is even

-------------------------------------------------------------------------------
makeStream recognizes %debug stream name
-------------------------------------------------------------------------------
Stream.tests.cpp:<line number>
...............................................................................

Stream.tests.cpp:<line number>: PASSED:
  REQUIRE_NOTHROW( Catch::makeStream( "%debug" ) )

-------------------------------------------------------------------------------
make_unique reimplementation
  From lvalue copies
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( lval.has_moved )
with expansion:
  !false

-------------------------------------------------------------------------------
make_unique reimplementation
  From rvalue moves
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( rval.has_moved )
with expansion:
  true

-------------------------------------------------------------------------------
make_unique reimplementation
  Variadic constructor
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr == std::tuple<int, double, int>{1, 2., 3} )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
mean
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( m == 19. )
with expansion:
  19.0 == 19.0

-------------------------------------------------------------------------------
measure
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x == 17 )
with expansion:
  17 == 17

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x == 23 )
with expansion:
  23 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( r.elapsed.count() == 42 )
with expansion:
  42 == 42

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( r.result == 23 )
with expansion:
  23 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( r.iterations == 1 )
with expansion:
  1 == 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( s.elapsed.count() == 69 )
with expansion:
  69 == 69

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( s.result == 17 )
with expansion:
  17 == 17

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( s.iterations == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
mix info, unscoped info and warning
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: warning:
  info
  unscoped info
  and warn may mix

Message.tests.cpp:<line number>: warning:
  info
  unscoped info
  they are not cleared after warnings


No assertions in test case 'mix info, unscoped info and warning'

-------------------------------------------------------------------------------
more nested SECTION tests
  doesn't equal
  equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( a == b )
with expansion:
  1 == 2

-------------------------------------------------------------------------------
more nested SECTION tests
  doesn't equal
  not equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

-------------------------------------------------------------------------------
more nested SECTION tests
  doesn't equal
  less than
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a < b )
with expansion:
  1 < 2

-------------------------------------------------------------------------------
nested SECTION tests
  doesn't equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( b != a )
with expansion:
  2 != 1

-------------------------------------------------------------------------------
nested SECTION tests
  doesn't equal
  not equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

a-------------------------------------------------------------------------------
nested sections can be skipped dynamically at runtime
  A
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................


No assertions in section 'A'

!
b1-------------------------------------------------------------------------------
nested sections can be skipped dynamically at runtime
  B
  B1
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................


No assertions in section 'B1'

!
-------------------------------------------------------------------------------
nested sections can be skipped dynamically at runtime
  B
  B2
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:

!
-------------------------------------------------------------------------------
non streamable - with conv. op
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( s == "7" )
with expansion:
  "7" == "7"

-------------------------------------------------------------------------------
non-copyable objects
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  CHECK( ti == typeid(int) )
with expansion:
  {?} == {?}

-------------------------------------------------------------------------------
normal_cdf
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_cdf(0.000000) == Approx(0.50000000000000000) )
with expansion:
  0.5 == Approx( 0.5 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_cdf(1.000000) == Approx(0.84134474606854293) )
with expansion:
  0.8413447461 == Approx( 0.8413447461 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_cdf(-1.000000) == Approx(0.15865525393145705) )
with expansion:
  0.1586552539 == Approx( 0.1586552539 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_cdf(2.809729) == Approx(0.99752083845315409) )
with expansion:
  0.9975208385 == Approx( 0.9975208385 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_cdf(-1.352570) == Approx(0.08809652095066035) )
with expansion:
  0.088096521 == Approx( 0.088096521 )

-------------------------------------------------------------------------------
normal_quantile
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_quantile(0.551780) == Approx(0.13015979861484198) )
with expansion:
  0.1301597986 == Approx( 0.1301597986 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_quantile(0.533700) == Approx(0.08457408802851875) )
with expansion:
  0.084574088 == Approx( 0.084574088 )

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( normal_quantile(0.025000) == Approx(-1.95996398454005449) )
with expansion:
  -1.9599639845 == Approx( -1.9599639845 )

-------------------------------------------------------------------------------
not allowed
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
not prints unscoped info from previous failures
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  this MAY be seen only for the FIRST assertion IF info is printed for passing
  assertions

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  this MAY be seen only for the SECOND assertion IF info is printed for passing
  assertions

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with message:
  this SHOULD be seen

-------------------------------------------------------------------------------
null strings
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( makeString( false ) != static_cast<char*>(0) )
with expansion:
  "valid string" != {null string}

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( makeString( true ) == static_cast<char*>(0) )
with expansion:
  {null string} == {null string}

-------------------------------------------------------------------------------
null_ptr
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr.get() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
pair<pair<int,const char *,pair<std::string,int> > -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( pair ) == "{ { 42, \"Arthur\" }, { \"Ford\", 24 } }" )
with expansion:
  "{ { 42, "Arthur" }, { "Ford", 24 } }"
  ==
  "{ { 42, "Arthur" }, { "Ford", 24 } }"

-------------------------------------------------------------------------------
parseEnums
  No enums
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) )
with expansion:
  {  } Equals: {  }

-------------------------------------------------------------------------------
parseEnums
  One enum value
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) )
with expansion:
  { Value1 } Equals: { Value1 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "Value1" ), Equals( std::vector<Catch::StringRef>{"Value1"} ) )
with expansion:
  { Value1 } Equals: { Value1 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "EnumName::Value1" ), Equals(std::vector<Catch::StringRef>{"Value1"} ) )
with expansion:
  { Value1 } Equals: { Value1 }

-------------------------------------------------------------------------------
parseEnums
  Multiple enum values
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) )
with expansion:
  { Value1, Value2 } Equals: { Value1, Value2 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) )
with expansion:
  { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }

ToString.tests.cpp:<line number>: PASSED:
  CHECK_THAT( parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) )
with expansion:
  { Value1, Value2, Value3 } Equals: { Value1, Value2, Value3 }

-------------------------------------------------------------------------------
pointer to class
-------------------------------------------------------------------------------
Tricky.tests.cpp:<line number>
...............................................................................

Tricky.tests.cpp:<line number>: PASSED:
  REQUIRE( p == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
print unscoped info if passing unscoped info is printed
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: PASSED:
  REQUIRE( true )
with message:
  this MAY be seen IF info is printed for passing assertions

-------------------------------------------------------------------------------
prints unscoped info on failure
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with messages:
  this SHOULD be seen
  this SHOULD also be seen

-------------------------------------------------------------------------------
prints unscoped info only for the first assertion
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  CHECK( false )
with message:
  this SHOULD be seen only ONCE

Message.tests.cpp:<line number>: PASSED:
  CHECK( true )

Message.tests.cpp:<line number>: PASSED:
  CHECK( true )
with message:
  this MAY also be seen only ONCE IF info is printed for passing assertions

Message.tests.cpp:<line number>: PASSED:
  CHECK( true )

-------------------------------------------------------------------------------
random SECTION tests
  doesn't equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( b != a )
with expansion:
  2 != 1

-------------------------------------------------------------------------------
random SECTION tests
  not equal
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( a != b )
with expansion:
  1 != 2

-------------------------------------------------------------------------------
replaceInPlace
  replace single char
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "b", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "azcdefcg" )
with expansion:
  "azcdefcg" == "azcdefcg"

-------------------------------------------------------------------------------
replaceInPlace
  replace two chars
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "c", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "abzdefzg" )
with expansion:
  "abzdefzg" == "abzdefzg"

-------------------------------------------------------------------------------
replaceInPlace
  replace first char
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "a", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "zbcdefcg" )
with expansion:
  "zbcdefcg" == "zbcdefcg"

-------------------------------------------------------------------------------
replaceInPlace
  replace last char
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, "g", "z") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "abcdefcz" )
with expansion:
  "abcdefcz" == "abcdefcz"

-------------------------------------------------------------------------------
replaceInPlace
  replace all chars
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(letters, letters, "replaced") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == "replaced" )
with expansion:
  "replaced" == "replaced"

-------------------------------------------------------------------------------
replaceInPlace
  replace no chars
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( Catch::replaceInPlace(letters, "x", "z") )
with expansion:
  !false

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( letters == letters )
with expansion:
  "abcdefcg" == "abcdefcg"

-------------------------------------------------------------------------------
replaceInPlace
  escape '
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( Catch::replaceInPlace(s, "'", "|'") )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( s == "didn|'t" )
with expansion:
  "didn|'t" == "didn|'t"

-------------------------------------------------------------------------------
request an unknown %-starting stream fails
-------------------------------------------------------------------------------
Stream.tests.cpp:<line number>
...............................................................................

Stream.tests.cpp:<line number>: PASSED:
  REQUIRE_THROWS( Catch::makeStream( "%somestream" ) )

-------------------------------------------------------------------------------
resolution
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res.size() == count )
with expansion:
  10 == 10

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( res[i] == rate )
with expansion:
  1000.0 == 1000 (0x<hex digits>)

-------------------------------------------------------------------------------
run_for_at_least, chronometer
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  1 >= 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  2 >= 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  4 >= 2

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  8 >= 4

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  16 >= 8

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  32 >= 16

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  64 >= 32

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( meter.runs() >= old_runs )
with expansion:
  128 >= 64

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( Timing.elapsed >= time )
with expansion:
  128 ns >= 100 ns

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( Timing.result == Timing.iterations + 17 )
with expansion:
  145 == 145

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( Timing.iterations >= time.count() )
with expansion:
  128 >= 100

-------------------------------------------------------------------------------
run_for_at_least, int
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  1 >= 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  2 >= 1

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  4 >= 2

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  8 >= 4

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  16 >= 8

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  32 >= 16

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  64 >= 32

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( x >= old_x )
with expansion:
  128 >= 64

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( Timing.elapsed >= time )
with expansion:
  128 ns >= 100 ns

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( Timing.result == Timing.iterations + 17 )
with expansion:
  145 == 145

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( Timing.iterations >= time.count() )
with expansion:
  128 >= 100

-------------------------------------------------------------------------------
second tag
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................


No assertions in test case 'second tag'

-------------------------------------------------------------------------------
sections can be skipped dynamically at runtime
  not skipped
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
sections can be skipped dynamically at runtime
  skipped
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:

-------------------------------------------------------------------------------
sections can be skipped dynamically at runtime
  also not skipped
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
send a single char to INFO
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with message:
  3

-------------------------------------------------------------------------------
sends information to INFO
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  REQUIRE( false )
with messages:
  hi
  i := 7

-------------------------------------------------------------------------------
shortened hide tags are split apart
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE_THAT( testcase.tags, VectorContains( Tag( "magic-tag" ) ) && VectorContains( Tag( "."_catch_sr ) ) )
with expansion:
  { {?}, {?} } ( Contains: {?} and Contains: {?} )

-------------------------------------------------------------------------------
skipped tests can optionally provide a reason
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:
explicitly with message:
  skipping because answer = 43

-------------------------------------------------------------------------------
splitString
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_THAT( splitStringRef("", ','), Equals(std::vector<StringRef>()) )
with expansion:
  {  } Equals: {  }

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_THAT( splitStringRef("abc", ','), Equals(std::vector<StringRef>{"abc"}) )
with expansion:
  { abc } Equals: { abc }

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_THAT( splitStringRef("abc,def", ','), Equals(std::vector<StringRef>{"abc", "def"}) )
with expansion:
  { abc, def } Equals: { abc, def }

-------------------------------------------------------------------------------
stacks unscoped info in loops
-------------------------------------------------------------------------------
Message.tests.cpp:<line number>
...............................................................................

Message.tests.cpp:<line number>: FAILED:
  CHECK( false )
with messages:
  Count 1 to 3...
  1
  2
  3

Message.tests.cpp:<line number>: FAILED:
  CHECK( false )
with messages:
  Count 4 to 6...
  4
  5
  6

-------------------------------------------------------------------------------
startsWith
-------------------------------------------------------------------------------
StringManip.tests.cpp:<line number>
...............................................................................

StringManip.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( startsWith("", 'c') )
with expansion:
  !false

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( startsWith(std::string("abc"), 'a') )
with expansion:
  true

StringManip.tests.cpp:<line number>: PASSED:
  CHECK( startsWith("def"_catch_sr, 'd') )
with expansion:
  true

-------------------------------------------------------------------------------
std::map is convertible string
  empty
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( emptyMap ) == "{  }" )
with expansion:
  "{  }" == "{  }"

-------------------------------------------------------------------------------
std::map is convertible string
  single item
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( map ) == "{ { \"one\", 1 } }" )
with expansion:
  "{ { "one", 1 } }" == "{ { "one", 1 } }"

-------------------------------------------------------------------------------
std::map is convertible string
  several items
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( map ) == "{ { \"abc\", 1 }, { \"def\", 2 }, { \"ghi\", 3 } }" )
with expansion:
  "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"
  ==
  "{ { "abc", 1 }, { "def", 2 }, { "ghi", 3 } }"

-------------------------------------------------------------------------------
std::pair<int,const std::string> -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(value) == "{ 34, \"xyzzy\" }" )
with expansion:
  "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"

-------------------------------------------------------------------------------
std::pair<int,std::string> -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( value ) == "{ 34, \"xyzzy\" }" )
with expansion:
  "{ 34, "xyzzy" }" == "{ 34, "xyzzy" }"

-------------------------------------------------------------------------------
std::set is convertible string
  empty
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( emptySet ) == "{  }" )
with expansion:
  "{  }" == "{  }"

-------------------------------------------------------------------------------
std::set is convertible string
  single item
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( set ) == "{ \"one\" }" )
with expansion:
  "{ "one" }" == "{ "one" }"

-------------------------------------------------------------------------------
std::set is convertible string
  several items
-------------------------------------------------------------------------------
ToStringGeneral.tests.cpp:<line number>
...............................................................................

ToStringGeneral.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::Detail::stringify( set ) == "{ \"abc\", \"def\", \"ghi\" }" )
with expansion:
  "{ "abc", "def", "ghi" }"
  ==
  "{ "abc", "def", "ghi" }"

-------------------------------------------------------------------------------
std::vector<std::pair<std::string,int> > -> toString
-------------------------------------------------------------------------------
ToStringPair.tests.cpp:<line number>
...............................................................................

ToStringPair.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( pr ) == "{ { \"green\", 55 } }" )
with expansion:
  "{ { "green", 55 } }"
  ==
  "{ { "green", 55 } }"

-------------------------------------------------------------------------------
stdout and stderr streams have %-starting name
-------------------------------------------------------------------------------
Stream.tests.cpp:<line number>
...............................................................................

Stream.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::makeStream( "%stderr" )->isConsole() )
with expansion:
  true

Stream.tests.cpp:<line number>: PASSED:
  REQUIRE( Catch::makeStream( "%stdout" )->isConsole() )
with expansion:
  true

-------------------------------------------------------------------------------
stringify ranges
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(streamable_range{}) == "op<<(streamable_range)" )
with expansion:
  "op<<(streamable_range)"
  ==
  "op<<(streamable_range)"

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(stringmaker_range{}) == "stringmaker(streamable_range)" )
with expansion:
  "stringmaker(streamable_range)"
  ==
  "stringmaker(streamable_range)"

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(just_range{}) == "{ 1, 2, 3, 4 }" )
with expansion:
  "{ 1, 2, 3, 4 }" == "{ 1, 2, 3, 4 }"

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(disabled_range{}) == "{?}" )
with expansion:
  "{?}" == "{?}"

-------------------------------------------------------------------------------
stringify( has_maker )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker<has_maker>" )
with expansion:
  "StringMaker<has_maker>"
  ==
  "StringMaker<has_maker>"

-------------------------------------------------------------------------------
stringify( has_maker_and_operator )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "StringMaker<has_maker_and_operator>" )
with expansion:
  "StringMaker<has_maker_and_operator>"
  ==
  "StringMaker<has_maker_and_operator>"

-------------------------------------------------------------------------------
stringify( has_neither )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(item) == "{?}" )
with expansion:
  "{?}" == "{?}"

-------------------------------------------------------------------------------
stringify( has_operator )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_operator )" )
with expansion:
  "operator<<( has_operator )"
  ==
  "operator<<( has_operator )"

-------------------------------------------------------------------------------
stringify( has_template_operator )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( item ) == "operator<<( has_template_operator )" )
with expansion:
  "operator<<( has_template_operator )"
  ==
  "operator<<( has_template_operator )"

-------------------------------------------------------------------------------
stringify( vectors<has_maker> )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker> }" )
with expansion:
  "{ StringMaker<has_maker> }"
  ==
  "{ StringMaker<has_maker> }"

-------------------------------------------------------------------------------
stringify( vectors<has_maker_and_operator> )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( v ) == "{ StringMaker<has_maker_and_operator> }" )
with expansion:
  "{ StringMaker<has_maker_and_operator> }"
  ==
  "{ StringMaker<has_maker_and_operator> }"

-------------------------------------------------------------------------------
stringify( vectors<has_operator> )
-------------------------------------------------------------------------------
ToStringWhich.tests.cpp:<line number>
...............................................................................

ToStringWhich.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify( v ) == "{ operator<<( has_operator ) }" )
with expansion:
  "{ operator<<( has_operator ) }"
  ==
  "{ operator<<( has_operator ) }"

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  3 == 3

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
strlen3
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( data.str.size() == data.len )
with expansion:
  4 == 4

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  6 == 6

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  5 == 5

-------------------------------------------------------------------------------
tables
-------------------------------------------------------------------------------
Generators.tests.cpp:<line number>
...............................................................................

Generators.tests.cpp:<line number>: PASSED:
  REQUIRE( strlen(std::get<0>(data)) == static_cast<size_t>(std::get<1>(data)) )
with expansion:
  6 == 6

-------------------------------------------------------------------------------
tags with dots in later positions are not parsed as hidden
-------------------------------------------------------------------------------
Tag.tests.cpp:<line number>
...............................................................................

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE( testcase.tags.size() == 1 )
with expansion:
  1 == 1

Tag.tests.cpp:<line number>: PASSED:
  REQUIRE( testcase.tags[0].original == "magic.tag"_catch_sr )
with expansion:
  magic.tag == magic.tag

-------------------------------------------------------------------------------
tests can be skipped dynamically at runtime
-------------------------------------------------------------------------------
Skip.tests.cpp:<line number>
...............................................................................

Skip.tests.cpp:<line number>: SKIPPED:

-------------------------------------------------------------------------------
thrown std::strings are translated
-------------------------------------------------------------------------------
Exception.tests.cpp:<line number>
...............................................................................

Exception.tests.cpp:<line number>: FAILED:
due to unexpected exception with message:
  Why would you throw a std::string?

-------------------------------------------------------------------------------
toString on const wchar_t const pointer returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString on const wchar_t pointer returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString on wchar_t const pointer returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString on wchar_t returns the string contents
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  CHECK( result == "\"wide load\"" )
with expansion:
  ""wide load"" == ""wide load""

-------------------------------------------------------------------------------
toString(enum class w/operator<<)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "E2/V0" )
with expansion:
  "E2/V0" == "E2/V0"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "E2/V1" )
with expansion:
  "E2/V1" == "E2/V1"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e3) == "Unknown enum value 10" )
with expansion:
  "Unknown enum value 10"
  ==
  "Unknown enum value 10"

-------------------------------------------------------------------------------
toString(enum class)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "0" )
with expansion:
  "0" == "0"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "1" )
with expansion:
  "1" == "1"

-------------------------------------------------------------------------------
toString(enum w/operator<<)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "E2{0}" )
with expansion:
  "E2{0}" == "E2{0}"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "E2{1}" )
with expansion:
  "E2{1}" == "E2{1}"

-------------------------------------------------------------------------------
toString(enum)
-------------------------------------------------------------------------------
EnumToString.tests.cpp:<line number>
...............................................................................

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e0) == "0" )
with expansion:
  "0" == "0"

EnumToString.tests.cpp:<line number>: PASSED:
  CHECK( ::Catch::Detail::stringify(e1) == "1" )
with expansion:
  "1" == "1"

-------------------------------------------------------------------------------
tuple<>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ }" == ::Catch::Detail::stringify(type{}) )
with expansion:
  "{ }" == "{ }"

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ }" == ::Catch::Detail::stringify(value) )
with expansion:
  "{ }" == "{ }"

-------------------------------------------------------------------------------
tuple<float,int>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "1.2f" == ::Catch::Detail::stringify(float(1.2)) )
with expansion:
  "1.2f" == "1.2f"

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ 1.2f, 0 }" == ::Catch::Detail::stringify(type{1.2f,0}) )
with expansion:
  "{ 1.2f, 0 }" == "{ 1.2f, 0 }"

-------------------------------------------------------------------------------
tuple<int>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ 0 }" == ::Catch::Detail::stringify(type{0}) )
with expansion:
  "{ 0 }" == "{ 0 }"

-------------------------------------------------------------------------------
tuple<string,string>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ \"hello\", \"world\" }" == ::Catch::Detail::stringify(type{"hello","world"}) )
with expansion:
  "{ "hello", "world" }"
  ==
  "{ "hello", "world" }"

-------------------------------------------------------------------------------
tuple<tuple<int>,tuple<>,float>
-------------------------------------------------------------------------------
ToStringTuple.tests.cpp:<line number>
...............................................................................

ToStringTuple.tests.cpp:<line number>: PASSED:
  CHECK( "{ { 42 }, { }, 1.2f }" == ::Catch::Detail::stringify(value) )
with expansion:
  "{ { 42 }, { }, 1.2f }"
  ==
  "{ { 42 }, { }, 1.2f }"

-------------------------------------------------------------------------------
uniform samples
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( e.point == 23 )
with expansion:
  23.0 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( e.upper_bound == 23 )
with expansion:
  23.0 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( e.lower_bound == 23 )
with expansion:
  23.0 == 23

InternalBenchmark.tests.cpp:<line number>: PASSED:
  CHECK( e.confidence_interval == 0.95 )
with expansion:
  0.95 == 0.95

-------------------------------------------------------------------------------
uniform_integer_distribution can return the bounds
-------------------------------------------------------------------------------
RandomNumberGeneration.tests.cpp:<line number>
...............................................................................

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( dist.a() == -10 )
with expansion:
  -10 == -10

RandomNumberGeneration.tests.cpp:<line number>: PASSED:
  REQUIRE( dist.b() == 10 )
with expansion:
  10 == 10

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Default constructed unique_ptr is empty
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( ptr )
with expansion:
  !{?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr.get() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Take ownership of allocation
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr )
with expansion:
  {?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr == 0 )
with expansion:
  0 == 0

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr.get() == naked_ptr )
with expansion:
  0x<hex digits> == 0x<hex digits>

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Take ownership of allocation
  Plain reset deallocates
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( ptr )
with expansion:
  !{?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr.get() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Take ownership of allocation
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr )
with expansion:
  {?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr == 0 )
with expansion:
  0 == 0

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr.get() == naked_ptr )
with expansion:
  0x<hex digits> == 0x<hex digits>

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Take ownership of allocation
  Reset replaces ownership
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr )
with expansion:
  {?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr.get() != 0 )
with expansion:
  0x<hex digits> != 0

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr == 2 )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Release releases ownership
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  CHECK_FALSE( ptr )
with expansion:
  !{?}

UniquePtr.tests.cpp:<line number>: PASSED:
  CHECK( ptr.get() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Move constructor
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( ptr1 )
with expansion:
  !{?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr2 )
with expansion:
  {?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  Move assignment
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE_FALSE( ptr2 )
with expansion:
  !{?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( ptr1 )
with expansion:
  {?}

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr1 == 2 )
with expansion:
  2 == 2

-------------------------------------------------------------------------------
unique_ptr reimplementation: basic functionality
  free swap
-------------------------------------------------------------------------------
UniquePtr.tests.cpp:<line number>
...............................................................................

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr1 == 2 )
with expansion:
  2 == 2

UniquePtr.tests.cpp:<line number>: PASSED:
  REQUIRE( *ptr2 == 1 )
with expansion:
  1 == 1

-------------------------------------------------------------------------------
vec<vec<string,alloc>> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(v) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(v) == "{ { \"hello\" }, { \"world\" } }" )
with expansion:
  "{ { "hello" }, { "world" } }"
  ==
  "{ { "hello" }, { "world" } }"

-------------------------------------------------------------------------------
vector<bool> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(bools) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(bools) == "{ true }" )
with expansion:
  "{ true }" == "{ true }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(bools) == "{ true, false }" )
with expansion:
  "{ true, false }" == "{ true, false }"

-------------------------------------------------------------------------------
vector<int,allocator> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" )
with expansion:
  "{ 42 }" == "{ 42 }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" )
with expansion:
  "{ 42, 250 }" == "{ 42, 250 }"

-------------------------------------------------------------------------------
vector<int> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42 }" )
with expansion:
  "{ 42 }" == "{ 42 }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ 42, 250 }" )
with expansion:
  "{ 42, 250 }" == "{ 42, 250 }"

-------------------------------------------------------------------------------
vector<string> -> toString
-------------------------------------------------------------------------------
ToStringVector.tests.cpp:<line number>
...............................................................................

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{  }" )
with expansion:
  "{  }" == "{  }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\" }" )
with expansion:
  "{ "hello" }" == "{ "hello" }"

ToStringVector.tests.cpp:<line number>: PASSED:
  REQUIRE( ::Catch::Detail::stringify(vv) == "{ \"hello\", \"world\" }" )
with expansion:
  "{ "hello", "world" }"
  ==
  "{ "hello", "world" }"

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  resizing bigger changes size and capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 10 )
with expansion:
  10 == 10

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  resizing smaller changes size but not capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 0 )
with expansion:
  0 == 0

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  resizing smaller changes size but not capacity
  We can use the 'swap trick' to reset the capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() == 0 )
with expansion:
  0 == 0

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  reserving bigger changes capacity but not size
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 10 )
with expansion:
  10 >= 10

-------------------------------------------------------------------------------
vectors can be sized and resized
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
vectors can be sized and resized
  reserving smaller does not change size or capacity
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.size() == 5 )
with expansion:
  5 == 5

Misc.tests.cpp:<line number>: PASSED:
  REQUIRE( v.capacity() >= 5 )
with expansion:
  5 >= 5

-------------------------------------------------------------------------------
warmup
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( (iterations * rate) > Catch::Benchmark::Detail::warmup_time.count() )
with expansion:
  160000000 (0x<hex digits>) > 100

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( (end - start) > Catch::Benchmark::Detail::warmup_time )
with expansion:
  310016000 ns > 100 ms

-------------------------------------------------------------------------------
weighted_average_quantile
-------------------------------------------------------------------------------
InternalBenchmark.tests.cpp:<line number>
...............................................................................

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( q1 == 14.5 )
with expansion:
  14.5 == 14.5

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( med == 18. )
with expansion:
  18.0 == 18.0

InternalBenchmark.tests.cpp:<line number>: PASSED:
  REQUIRE( q3 == 23. )
with expansion:
  23.0 == 23.0

-------------------------------------------------------------------------------
xmlentitycheck
  embedded xml: <test>it should be possible to embed xml characters, such as <,
                " or &, or even whole <xml>documents</xml> within an attribute
                </test>
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

-------------------------------------------------------------------------------
xmlentitycheck
  encoded chars: these should all be encoded: &&&"""<<<&"<<&"
-------------------------------------------------------------------------------
Misc.tests.cpp:<line number>
...............................................................................

Misc.tests.cpp:<line number>: PASSED:

===============================================================================
test cases:  417 |  312 passed |  85 failed | 6 skipped | 14 failed as expected
assertions: 2260 | 2079 passed | 146 failed | 35 failed as expected

